假设我有一堆包含多列的数据框。我需要在第1列和第2列,第1列和第3列上调用lm
函数,依此类推。所以基本上我需要遍历所有列并在构建模型时存储拟合的结果。我遇到的问题是:
lm(df[1]~df[2], data = df) #doesnt work. In this case df is the data frame object
#and df[1] is the first column.
在循环中执行此操作的好方法是什么,例如以迭代方式访问df
的列?
答案 0 :(得分:2)
这里有一个df
第一列的例子,它作为因变量对着所有其他列回归,我认为这就是你想要的......
x<-1:5
y<-5:1
df<-data.frame(x,y,x,y,x,y)
df1<-df[,1]
df2<-df[,2:6]
resultslist<-lapply(df2,function(x) (lm(df1~x)))
如果您对所需的系数/输出更具体,那么这个答案可能会更好
答案 1 :(得分:1)
鉴于您似乎希望循环使用适合单项线性模型的多个列,并且响应是data.frame
中的第一列,以下内容将起作用
dat <- data.frame(matrix(rnorm(110),ncol=11))
.names <- names(dat)
.formulae <- lapply(.names[-1], reformulate, response = .names[1])
results_list <- lapply(.formulae, lm, data = dat)