使用变量名称过滤 DPLYR 的tbl_df
filter dplyr's tbl_df using variable names
我在使用dplyr的tbl_df时遇到问题,分别是常规data.frame。我得到了一个大tbl_df(500x30K),需要过滤它。所以我想做的是:
filter(my.tbl_df, row1>0, row10<0)
这将类似于
df[df$row1>0 & df$row10<0,]
效果很好。但是我需要在运行时动态构建过滤器函数,所以我需要通过一个或多个变量访问 DF/tbl_df 列。我尝试了类似的东西:
var=c("row1","row10")
op=c(">","<")
val=c(0,0)
filter(my.tbl_df, eval(parse(text=paste(var,op,val,sep="")))
这给了我一个错误:与 LGLSXP 不兼容这似乎深深植根于Cpp代码中。
我将不胜感激任何提示。还指出"字符串到环境变量"的转换也会有所帮助,因为我很惊讶我做错了。
最好的,
马里奥
这与此问题有关。同时,一种方法可能是构造整个表达式,即:
> my.tbl_df <- data.frame( row1 = -5:5, row10 = 5:-5)
> call <- parse( text = sprintf( "filter(my.tbl_df, %s)", paste(var,op,val, collapse="&") ) )
> call
expression(filter(my.tbl_df, row1 > 0&row10 < 0))
> eval( call )
row1 row10
1 1 -1
2 2 -2
3 3 -3
4 4 -4
5 5 -5