gpt4 book ai didi

r - 在R的data.table环境中创建公式

转载 作者:行者123 更新时间:2023-12-03 12:54:46 24 4
gpt4 key购买 nike

我想在data.table内运行回归。 formula需要动态构建。我尝试了以下方法:

x = data.table(a=1:20, b=20:1, id=1:5)
> x[,as.list(coef(lm(as.formula("a ~ b")))),by=id]
Error in eval(expr, envir, enclos) : object 'a' not found

如何将环境指定为进行评估的实际数据表的环境?

编辑:我知道我可以做lm(a〜b)。我需要公式是动态的,以便将其构建为字符串。动态地说,公式可以是 paste0(var_1, "~", var_2),其中 var_1 = avar_2 = b
这是我认为我们可以做得更好的一种解决方案:
txt = parse(text="as.list(coef(lm(a ~ b)))")
> x[,eval(txt),by=id]
id (Intercept) b
1: 1 21 -1
2: 2 21 -1
3: 3 21 -1
4: 4 21 -1
5: 5 21 -1

最佳答案

lm可以接受字符串作为公式,因此可以将其与.SD结合使用,如下所示:

> x[, as.list(coef(lm("a ~ b", .SD))), by = id]
id (Intercept) b
1: 1 21 -1
2: 2 21 -1
3: 3 21 -1
4: 4 21 -1
5: 5 21 -1

关于r - 在R的data.table环境中创建公式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14784048/

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