【发布时间】:2020-08-28 10:06:15
【问题描述】:
我正在处理一个由至少三个变量(波长、辐照度、x)组成的数据框,我已经旋转了这些变量,以便每个波长都是一个新行,从而允许我在每个波长上运行 lm() 并提取系数,所以我可以看到 x 如何随波长和辐照度变化。
但是,我能够让它工作的唯一方法是在每个波长上显式运行 lm()。这对于较大的数据帧是不可行的,因为数据帧将具有数百个参数,这些参数会随着波长和辐照度的变化而变化。
我觉得这可以使用“应用”或编写循环来解决,但我没有任何运气让它们工作。
请参阅下面的问题示例。
我还是很新,所以任何指针表示赞赏
irr = rnorm(33, 10, 3)
wave = c(290, 290, 290, 300, 300, 300, 310, 310, 310, 320, 320, 320, 330, 330, 330, 340, 340, 340, 350, 350, 350, 360, 360, 360, 370, 370, 370, 380, 380, 380, 400, 400, 400)
x = rnorm(33, 50, 2)
df <- as.data.frame(cbind(wave, irr, x))
df_wide <- df %>%
pivot_wider(names_from = "wave",
values_from = "x")
"290_lm" <- lm(df_wide$`290` ~ df_wide$irr)
"300_lm" <- lm(df_wide$`300` ~ df_wide$irr) #etc through each wavelength
## Attempt at loop
for (i in 2:(ncol(df_wide))){
irr <- df_wide[2][i]
lm_function <- paste(irr,
sep = "~")
df_lm = lm(lm_function,
data = df_wide[2:12])
}
【问题讨论】:
-
我建议不要旋转,而是使用
lm的subset选项。我也想知道线性模型中的因变量和自变量是什么。