2014-03-05 28 views
1

我試圖使用apply()系列函數來回歸矢量上的矩陣的每一列,以爲每列生成一組係數,但是我可以'我的頭圍繞着它。在平移環以上的應用功能,將不勝感激在矩陣上應用lm()在R中的1個變量

x <- matrix(runif(10*10), 10,10) 
y <- runif(10) 

coefs <- matrix(NA, ncol = 2, nrow = 10) 

for(i in 1:10){ 
    coefs[i,] <- lm(y~x[,i])$coef 
} 

幫助:例如,我可以用循環如下執行此操作。謝謝。

回答

1

這應做到:

t(apply(x, 2, function(x.col) lm(y~x.col)$coef)) 

我們應用在你的矩陣x,通過柱(這是什麼2手段),我們定義了一個簡單的函數來獲得滿意的結果。 apply會自動疊加的結果爲2行矩陣,我們轉換成所需的格式與t

 (Intercept)  x.col 
[1,] 0.6314854 -0.567179167 
[2,] 0.3679481 0.020019158 
[3,] 0.2448379 0.280314036 
[4,] 0.4195727 -0.082207564 
[5,] 0.1249273 0.425974675 
[6,] 0.4567553 -0.194174789 
[7,] 0.2653036 0.181709766 
[8,] 0.2963443 0.217408463 
[9,] 0.2902572 0.174962624 
[10,] 0.3730373 0.007380176 

注意有什麼不對你的循環。自從初始化coefs以來,它應該和apply一樣快。如果你追求速度,那麼你應該考慮計算斜率和截距的更快速的選項,因爲它可以做很多其他的事情,從而減慢速度。