R data.table:将字符串作为表达式计算在j中
我想写一个有两个输入的函数:一个新变量的名称和一个数学表达式。这两个参数都是字符串 此函数应采用R data.table:将字符串作为表达式计算在j中,r,data.table,R,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)
数据表
,并添加指定的新变量,该变量应为给定数学表达式的结果
这是我尝试的一个最简单的工作示例:
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
库(data.table)
df这是一个经典,以前被问过几十次甚至几百次。您正在查找parse/eval
:df[,(新变量):=eval(parse(text=…expression))]
。这种结构通常是不鼓励的,通常意味着你应该重新思考你正在尝试做什么。谢谢你的快速回复。你能给出一个提示,说明为什么不鼓励这样做吗?我需要从data.frame的字符列中提取表达式,我没有其他想法。可能需要看一下关于parse
和eval
。这是一个很好的起点。我没有检查你之前的问题:-)