我希望这些系数在数据帧的所有列上循环。我想将这个输出保存到一个变量中,我可以将它放置到一个数据框架中,其中所有的值都可以放在一个列中。
打印输出显示了许多NA。如何在这个过程中去除这一点。
所以,就像:
Co_data <- (Looped values)代码示例:
mod1 <- lm(starling_farm ~ years, data = L_farmland_frame)
for(i in colnames(L_population.frame)){
print(c(mod1$coefficients[i],
mod2$coefficients[i],
mod3$coefficients[i],
mod4$coefficients[i],
mod5$coefficients[i],
mod6$coefficients[i],
mod7$coefficients[i],
mod8$coefficients[i],
mod9$coefficients[i],
mod10$coefficients[i],
mod11$coefficients[i],
mod12$coefficients[i],
mod13$coefficients[i],
mod14$coefficients[i],
mod15$coefficients[i],
mod16$coefficients[i],
mod17$coefficients[i]))} ```
Output value:
```years years years years years -0.17263280 -0.16783959 0.04566027 -0.11492727 -0.11345848
years years years years years -0.15713866 -0.11703737 -0.08202416 -0.25307321 -0.07794717
years years years years years -0.07591691 -0.12998199 -0.10227772 -0.03500562 -0.10366356
years years -0.13475428 -0.14861171
纳那
纳那
纳那
……
……
发布于 2019-11-18 16:50:08
我不知道您的数据集的结构(请编辑您的问题以添加您的数据的reproducible example。
但是,如果要提取lm函数在所有列中的系数,可以这样做:
数据:
df <- mtcars[c(1:10),]数据集如下所示:
> df
mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4
Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1
Hornet 4 Drive 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 1
Hornet Sportabout 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2
Valiant 18.1 6 225.0 105 2.76 3.460 20.22 1 0 3 1
Duster 360 14.3 8 360.0 245 3.21 3.570 15.84 0 0 3 4
Merc 240D 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2
Merc 230 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2
Merc 280 19.2 6 167.6 123 3.92 3.440 18.30 1 0 4 4然后,您可以在apply上对所有列执行lm函数:(在这里,我们将通过比较每个列和列mpg来计算lm )。
mod <- apply(df,2,function(x){lm(x~mpg, data = df)$coefficients[1]})你得到的是:
> mod
mpg cyl disp hp drat
4.493867e-15 1.470741e+01 6.987361e+02 4.449931e+02 1.866482e+00
wt qsec vs am gear
4.834655e+00 1.035858e+01 -1.135418e+00 -6.882239e-01 1.195054e+00
carb
6.021719e+00 最后,您可以使用以下方法执行数据访问:
final_df = data.frame(conditions = colnames(df),Coefficient = mod)它能回答你的问题吗?
编辑-删除NA
如果您有一些NA值,可以通过执行以下操作来删除它:
mod <- mod[!is.na(mod)]https://stackoverflow.com/questions/58919220
复制相似问题