Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 在lm()中使用列号而不是名称_R_Formula_Lm - Fatal编程技术网

R 在lm()中使用列号而不是名称

R 在lm()中使用列号而不是名称,r,formula,lm,R,Formula,Lm,与类似于lm(bp~height+age,data=mydata)的内容不同,我希望通过数字而不是名称来指定列 我尝试了lm(mydata[[1]]~mydata[[2]]+mydata[[3]]),但问题是,在拟合模型中,系数被命名为mydata[[2]],mydata[[3]]等,而我希望它们有真实的列名 也许这是一个不吃蛋糕的例子,但如果专家们能建议这是否可行,我将不胜感激 lm( as.formula(paste(colnames(mydata)[1], "~",

与类似于
lm(bp~height+age,data=mydata)
的内容不同,我希望通过数字而不是名称来指定列

我尝试了
lm(mydata[[1]]~mydata[[2]]+mydata[[3]])
,但问题是,在拟合模型中,系数被命名为
mydata[[2]]
mydata[[3]]
等,而我希望它们有真实的列名

也许这是一个不吃蛋糕的例子,但如果专家们能建议这是否可行,我将不胜感激

lm(
    as.formula(paste(colnames(mydata)[1], "~",
        paste(colnames(mydata)[c(2, 3)], collapse = "+"),
        sep = ""
    )),
    data=mydata
)

c(2,3)
不同,你可以使用你想要的索引数量(不需要for循环)。

如果你给出一个稍微大一点的上下文,你可能会得到更好的答案:“你试图解决的问题是什么?”谢谢你的评论。我在数据帧中有大量列。我正在使用其中的一个子集拟合线性模型,使用包括逐步选择在内的各种技术。如果调用lm()时我可以按编号引用列,这会很方便,但如果可能的话,我希望模型显示列名。我会根据列名粘贴一个公式,如:如果你提出了一个好的解决方案,你就被允许(鼓励)发布你自己问题的答案…在第三行末尾缺少一个逗号?谢谢,@Ben。另外,也许使用
as.formula
会更健壮,尽管
lm()
不需要(但其他型号需要)。谢谢。这说明了Ben Bolker早些时候的建议,效果非常好。为了使这一点完全简单,我需要在列名周围添加反勾号,因为列名中有特殊字符:
paste('`',colnames(mydata)[c(2,3)],'`',sep=“”,collapse=“+”