R延迟评估data.frame中的两个变量

时间:2015-10-22 13:33:32

标签: r eval lazy-evaluation

给定数据框

df <- data.frame(a = sample(c(1,0), 30, replace = TRUE),
             b = sample(c(2,3), 30, replace = TRUE),
             c = sample(c(4,5), 30, replace = TRUE))

以及lazy()包中的lazyeval参数捕获的表达式

library(lazyeval)
toeval <- lazy(c(a,b))

我希望得到一个包含这两个变量a和b而不是一个连接向量的数据框,如

所示
result <- lazy_eval(toeval, df)

一个不起眼的版本立即出现在脑海中

df_result <- data.frame(a = result[1:(nrow(df))],
                        b = result[(nrow(df)+1):(nrow(df)*2)])

非常感谢更好的创意!

1 个答案:

答案 0 :(得分:3)

您可以尝试:

toeval <- lazy(list(a,b))
data.frame(do.call(cbind, lazy_eval(toeval, df)))