gpt4 book ai didi

r - 将公式列表应用于 R data.table

转载 作者:行者123 更新时间:2023-12-01 22:59:42 26 4
gpt4 key购买 nike

我有一个 data.table 和一个公式列表,

DT <- data.table(A = c(1:3), B = c(3:1), C = c(4:6), D = (6:4))
l <- list(f1 = "A + B", f2 = "B + C", f3 = "C - D", f4 = "D / A")

这可以通过
DT[, ":="(f1 = A + B, f2 = B + C, f3 = C - D, f4 = D / A)]

或者
for (i in 1:length(l)) {
DT[, eval(names(l)[i]) := eval(parse(text=l[[i]]))]
}

有没有办法使用 l 中的信息来做到这一点?不使用循环?
# some code
DT
# A B C D f1 f2 f3 f4
# 1: 1 3 4 6 4 7 -2 6.000000
# 2: 2 2 5 5 4 7 0 2.500000
# 3: 3 1 6 4 4 7 2 1.333333

最佳答案

如果您正在构建 l手动,而不是像这样写

L = quote(`:=`(f1 = A + B, f2 = B + C, f3 = C - D, f4 = D / A))

然后你可以像这样使用它
DT[, eval(L)]

# A B C D f1 f2 f3 f4
# 1: 1 3 4 6 4 7 -2 6.000000
# 2: 2 2 5 5 4 7 0 2.500000
# 3: 3 1 6 4 4 7 2 1.333333

这是 recommended practice from the FAQ ,这就解释了...

quote() and eval() are like macros in other languages.

关于r - 将公式列表应用于 R data.table,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38644884/

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