R data.table:将字符串计算为j中的表达式

时间:2018-05-29 09:38:07

标签: r data.table

我想写一个有两个输入的函数:一个新变量的名称和一个数学表达式。这两个论点都是字符串。

此函数应采用data.table并添加指定的新变量,该变量应该是给定数学表达式的结果。

这是我尝试过的最简单的工作示例:

library(data.table)

df <- data.table(A = 1:10, B = 1:10)
new_var <- "C"
expression <- "A + B"


example_fun <- function(new_var, expression) {
  DT[, (new_var) := expression]
}

example_fun(new_var, expression)

> DT
     A  B     C
 1:  1  1 A + B
 2:  2  2 A + B
 3:  3  3 A + B
 4:  4  4 A + B
 5:  5  5 A + B
 6:  6  6 A + B
 7:  7  7 A + B
 8:  8  8 A + B
 9:  9  9 A + B
10: 10 10 A + B

当我在函数中使用DT[, (new_var) := (expression)]DT[, (new_var) := .(expression)]时,我得到相同的结果。

根据我的理解,我不得不告诉data.table expression不应该将get()评估为字符串而是作为表达式。我知道我可以使用-rwxr-xr-x. 1 root root 967K Mar 22 2017 libstdc++.so.6.0.13 -rwxr-xr-x. 1 root root 6.5M Aug 1 2017 libstdc++.so.6.0.20 -rwxr-xr-x. 1 root root 11M Aug 1 2017 libstdc++.so.6.0.21 -rwxr-xr-x. 1 root root 12M Jan 30 16:58 libstdc++.so.6.0.24 来使用字符串访问单个变量,但这不能同时使用多个变量。

0 个答案:

没有答案