我试图在每一行的数据框的两列之间应用简单的线性回归。经过一些研究后,我觉得我几乎就在那里,但我的功能仍然无法奏效。请看一下:
set.seed(1)
DF <- data.frame(A=rnorm(50, 100, 3),
B=rnorm(50, 100, 3))
resultlist <- apply(DF, 1, function(y) lm(y ~ x))
resultcoeffs <- apply(DF, 1, function(y) lm(y ~ x)$coefficients)
关于如何实现这一目标的任何提示?
提前致谢。
答案 0 :(得分:1)
每排只有一个观察。请注意,由于没有足够的自由度,您会得到NA
估算值。
这个想法将是:
mapply(function(x,y) lm(y~x)$coefficients, DF[,1], DF[,2])
或者
apply(DF1, 1, function(x) lm(x[2]~x[1])$coefficients)
假设您每行有很多观察结果,即x
和y
个变量跨越多列
mapply(function(x,y) lm(y~x)$coefficients, as.data.frame(t(DFNew[1:3])),
as.data.frame(t(DFNew[4:6])))
或者
apply(DFNew, 1, function(x) lm(x[4:6]~x[1:3])$coefficients)
set.seed(25)
DFNew <- as.data.frame(matrix(sample(1:50,10*6, replace=TRUE), ncol=6))