gpt4 book ai didi

c++ - 使用变量名过滤 dplyr 的 tbl_df

转载 作者:太空狗 更新时间:2023-10-29 21:00:11 27 4
gpt4 key购买 nike

我在使用 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 不兼容这似乎深深 Root 于 Cpp 代码中。

如有任何提示,我将不胜感激。还指出“字符串到环境变量”的转换会很有帮助,因为我很高兴我做错了。

最好的,

马里奥

最佳答案

这与此有关 issue .与此同时,一种方法可能是构造整个表达式,即:

> 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

关于c++ - 使用变量名过滤 dplyr 的 tbl_df,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22782034/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com