gpt4 book ai didi

r - R回归中的动态变量名称

转载 作者:行者123 更新时间:2023-12-04 13:36:17 24 4
gpt4 key购买 nike

意识到使用动态变量名的危险,我试图遍历选择不同变量规范的varios回归模型。通常,!!rlang::sym()可以为我很好地解决此类问题,但是在某种程度上它在回归方面会失败。最小的示例如下:

y= runif(1000) 
x1 = runif(1000)
x2 = runif(1000)

df2= data.frame(y,x1,x2)
summary(lm(y ~ x1+x2, data=df2)) ## works

var = "x1"
summary(lm(y ~ !!rlang::sym(var)) +x2, data=df2) # gives an error

我的理解是 !!rlang::sym(var))接受 var的值(即x1),并以R认为这是一个变量(不是字符)的方式将其放入代码中。但是我似乎错了。谁能启发我?

最佳答案

就我个人而言,我喜欢对语言进行一些计算。对我来说,将bquoteeval组合起来最容易(记住)。

var <- as.symbol(var)
eval(bquote(summary(lm(y ~ .(var) + x2, data = df2))))
#Call:
#lm(formula = y ~ x1 + x2, data = df2)
#
#Residuals:
# Min 1Q Median 3Q Max
#-0.49298 -0.26248 -0.00046 0.24111 0.51988
#
#Coefficients:
# Estimate Std. Error t value Pr(>|t|)
#(Intercept) 0.50244 0.02480 20.258 <2e-16 ***
#x1 -0.01468 0.03161 -0.464 0.643
#x2 -0.01635 0.03227 -0.507 0.612
#---
#Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
#
#Residual standard error: 0.2878 on 997 degrees of freedom
#Multiple R-squared: 0.0004708, Adjusted R-squared: -0.001534
#F-statistic: 0.2348 on 2 and 997 DF, p-value: 0.7908

我发现此方法优于任何未显示与 summary(lm(y ~ x1+x2, data=df2))相同的调用的方法。

关于r - R回归中的动态变量名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53635127/

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