我有一个数据集
auto <- read.csv("http://www-bcf.usc.edu/~gareth/ISL/Auto.csv")
我试图在其中查找任何重要的交互作用术语。我想要仅包含单个交互及其构成项的回归(即,气缸+加速度+气缸:加速度是我要检查的回归)。
到目前为止,使用其他Stackoverflow问题,我已经能够提出以下建议:
results <- NULL
vars=colnames(auto)[-c(1,9)]
for(i in vars){
for(j in vars){
if(i ! = j){
factor=paste(i,j,sep='*')}
for(k in 1:20){
results[[k]]<-summary(lm(paste("mpg~", factor), data=auto)))
}}}
但是,这会连续生成一个列表,其中仅存储了其中的最后一次交互(即,原产地系数*年)。如果代码不只执行唯一值,也不执行条款的平方版本,我也可以。但是,由于它们中的两个(列表中的最后两个,原点和年份)不值得平方,并且由于我不知道如何为i和j设置单独的长度并使之起作用,所以我省略了
我应该怎么做才能从此循环中获得想要的结果?我应该以不同的方式去做吗?我还尝试创建所有交互,然后将其添加到数据框并在其中循环运行,但这似乎没有任何效率/可能性。
答案 0 :(得分:0)
您的k
循环除了将结果存储到长度为20的列表中外没有其他作用,所有值都将相同,并且剩下的是{{ 1}}。我将预先计算组合,为每个组合创建一个列表,然后将其馈入单个循环。
请注意,R附带了一个i*j
数据集。
mtcars