我想写一个有两个输入的函数:一个新变量的名称和一个数学表达式。这两个论点都是字符串。
此函数应采用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
来使用字符串访问单个变量,但这不能同时使用多个变量。