R - 在每个数据帧行上应用 lm

thi*_*oso 3 r apply lm

我正在尝试在数据框的两列之间对每一行应用简单的线性回归。经过一番研究,我觉得我已经差不多了,但我的功能仍然不起作用。请看一下:

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)
Run Code Online (Sandbox Code Playgroud)

关于如何实现这一目标有什么建议吗?

提前致谢。

akr*_*run 5

每行只有一个观察结果。请注意,您会得到NA估计值,因为没有足够的自由度。

这个想法是:

 mapply(function(x,y) lm(y~x)$coefficients, DF[,1], DF[,2])
Run Code Online (Sandbox Code Playgroud)

或者

 apply(DF1, 1, function(x) lm(x[2]~x[1])$coefficients)
Run Code Online (Sandbox Code Playgroud)

编辑

假设您每行有许多观察值x,即y变量跨越许多列

 mapply(function(x,y) lm(y~x)$coefficients, as.data.frame(t(DFNew[1:3])),
                             as.data.frame(t(DFNew[4:6])))
Run Code Online (Sandbox Code Playgroud)

或者

 apply(DFNew, 1, function(x) lm(x[4:6]~x[1:3])$coefficients)
Run Code Online (Sandbox Code Playgroud)

数据

set.seed(25)
DFNew <- as.data.frame(matrix(sample(1:50,10*6, replace=TRUE), ncol=6))
Run Code Online (Sandbox Code Playgroud)