r - 对 data.frame 的每一行执行 lm(),其中预测器长度不同
问题描述
我正在尝试创建一个循环,该循环在数据帧的每一行(响应)上针对数据帧外部的预测向量执行 lm。预测变量的值和长度取决于行所属的类别 (df$Group)。感谢您是否可以帮助我创建一个为每一行执行 lm 的循环,这也将系数保存到单个向量/数据帧中。此外,要通过多个具有相同结构的数据帧运行循环,然后将系数保存到单个数据帧,我应该对代码进行哪些更改?以下是我尝试过的 - 它不保存系数。
dfList <- list(df,df1,df2)
df <- data.frame(ID=c(1:10),Group=c("A","A","A","A","B","B","B","B","B","B"), T1= rnorm(10, mean=1, sd=1),
T2= rnorm(10, mean=2, sd=1),T3= seq(40,58,by=2),T4= seq(10,28,by=2))
A <- df$ID
B <- df$Group
C <- numeric(length=length(A))
x1 <- c(1:4)
x2 <- c(2:4)
for (i in length(A)){
if(B[i] == "A"){C[i] <- apply(df[,c(3:6)],1,function(y) lm(y~x1)$coefficients[2])[i]}
if(B[i] == "B"){C[i] <- apply(df[,c(4:6)],1,function(y)lm(y~x2)$coefficients[2])[i]}
}
感谢任何帮助!谢谢!
解决方案
你想做这样的事情吗?
list_df <- split(df, df$Group)
A_coeff <- apply(list_df[[1]][, 3:6], 1, function(y) lm(y~x1)$coefficients[2])
B_coeff <- apply(list_df[[2]][, 4:6], 1, function(y) lm(y~x2)$coefficients[2])
推荐阅读
- gnuplot - gnuplot,后记:没有通过线条样式着色
- aframe - 如何在 oculus 上打开 a-frame 应用程序?
- java - Maven shade 只是将依赖项(3 个中的 2 个)中的一些类着色到最终 jar
- angular - 错误 TS2351:此表达式不可构造
- python-3.x - 如何正确地使这个嵌套的for循环函数
- vue.js - 移动标签时图标颜色改变 - vuej.s
- python - 正则表达式 - 摆脱匹配结果的某些部分
- visual-c++ - ON_COMMAND 消息映射宏的替代方法来调用带有参数的函数
- python - 使用 np.transpose 使数组广播
- accessibility - 像 ChromeVOX 这样的网络辅助功能屏幕阅读器如何阅读段落?