0

假设我有一个包含一堆列的数据框。我需要lm在第 1 列和第 2 列、第 1 列和第 3 列上调用函数,依此类推。所以基本上我需要在构建模型时遍历所有列并存储拟合结果。我遇到的问题是:

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什么是在循环中执行此操作的好方法,例如以迭代方式访问列?

4

2 回答 2

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)))

如果您更具体地了解您想要的系数/输出,那么这个答案可能会更好

于 2012-10-03T21:53:20.237 回答
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)
于 2012-10-04T03:23:07.303 回答