r - 将此函数的参数更改为 R 中的抽象变量
问题描述
为了使用for循环,我试图用变量替换这个函数中的参数:
lm(mpg~cylinders, data=Auto)
所以我这样做了:
var1='cylinders'
lm((paste('mpg ~',var1)), data = Auto)
它工作得很好。
现在,我想知道如何用 var1 和 var2 替换参数 cylinders+acceleration。
于是尝试了同样的方法。我试图替换这个:
lm(mpg~cylinders+acceleration, data=Auto)
经过
var1='cylinders'
var2 = 'acceleration'
lm((paste('mpg ~',var1+var2)), data = Auto)
但我收到一条消息错误:
Error in var1 + var2 : non-numeric argument to binary operator
所以我想了解如何使用 var1 和 var2 以便之后使用for循环。
解决方案
用于reformulate
生成公式。
var1 <- 'cyl'
var2 <- 'disp'
fo <- reformulate(c(var1, var2), "mpg")
lm(fo, mtcars)
或者你可以这样写它给出相同的答案,除了上面在输出中的 Call: 行中按字面显示 fo 而下面的代码在输出中的 Call: 行中扩展 fo。
do.call("lm", list(fo, quote(mtcars)))
给予:
Call:
lm(formula = mpg ~ cyl + disp, data = mtcars)
Coefficients:
(Intercept) cyl disp
34.66099 -1.58728 -0.02058
推荐阅读
- mongodb - MongoDB中的聚合总和
- fortran - gfortran -fopenmp 导致分段错误
- html - CSS按钮滑动过渡效果问题
- architecture - Xcode 12 Apple M1 arm64 - 可设计错误:“错误的架构”
- excel - 当我已经在变量中设置文件名和路径时如何关闭工作簿
- python - Tensorflow:梯度在训练过程中突然变成了 NaN
- xml - 如何删除 PostgreSQL 中的 XML 属性?
- angular - 从 @ 开始的 Angular 模块
- haskell - Haskell IO:无法将类型“IO”与“[]”匹配
- java - 如何根据环境管理数据库?