这可能是一个基本问题,但我似乎无法在任何地方找到解决方案。如果我们有一个包含100个因子的数据框(称之为a1
到a100
),那么如何在R中输入线性模型?我知道你可以写
lm(y~ a1*...*a100)
但如果名字很长,那么将它们全部写出来需要很长时间。有更快的方法吗?例如,通过引用列或类似的东西?有点相关,如果我得到一个包含括号的列名的数据表(例如y-max()
),我怎么能输入?它作为R中的函数读取,但它不是。
如果已经提出这个问题,我道歉,但我似乎无法找到答案。
提前谢谢大家
--- ---编辑
感谢您的回答。但是,如果我确实需要更高阶的交互条款,我将如何实现这一目标?我需要写一个脚本还是有更聪明的方法?
答案 0 :(得分:3)
如果你想包括所有其他y~.
就足够了,但是如果你想要一些选定的变量,可以说,var 2到50,52-100。你可以做这样的事吗?
vars<-names(df)[c(2:50,52:101)] #or whatever..
covs<-paste(vars, collapse="+")
model<-paste("y~",covs)
df.lm<-lm(as.formula(model), data=df)
答案 1 :(得分:3)
下载时,通过阅读R附带的Introduction to R manual,可以了解其中的许多内容。
通常,具有多个级别的因子存储为单个变量:
treat <- c("control", "placebo", "placebo", "control", "drugA", "control",
"drugB", ...)
如果是这样,你可以使用lm(y~treat)
,R会为你处理。另一方面,如果您的数据框只有y
和a1
到a100
,那么您可以使用lm(y~., my.data)
和R我也会照顾你。