簡體   English   中英

R中具有復制功能,R中返回多個向量或矩陣

[英]Have replicate function in R return several vectors or matrix in R

我想模擬一些數據並返回Beta 1和Beta 2的不同估算值。我想將復制或類似函數用作lappy,sapply。

beta = matrix(data = rep(NA, 200), ncol = 2)

colnames(beta) = c("Beta 1", "Beta 2")

beta = replicate (100,{

  x = matrix(data = rep(NA, 300), ncol = 3)

  colnames(x) = c("y", "x1", "x2")

  x$y = rnorm(100,2,4)

  x$x1 = rnorm(100, 4,6)

  x$x2 = rnorm(100,  5,7)

  lm = lm(y ~ x1 + x2, data = x)

  coef(lm)[2]  ; coef(lm)[3]  
})

以上僅返回一個beta的100個重復

    beta = replicate (100,{
                      x = matrix(data = rep(NA, 300), ncol = 3)
                      colnames(x) = c("y", "x1", "x2")
                      x = data.frame(y=rnorm(100,2,4),
                                     x1=rnorm(100, 4,6),
                                     x2=rnorm(100, 5,7))
                      lm = lm(y ~ x1 + x2, data = x)

                     beta=c(Beta1=coef(lm)[2],Beta2=coef(lm)[3])

                      })
                    beta=t(beta)

使用sapply

res <- sapply(1:100, function(i){
  x = matrix(data = rep(NA, 300), ncol = 3)
  colnames(x) = c("y", "x1", "x2")
  x$y = rnorm(100,2,4)
  x$x1 = rnorm(100, 4,6)
  x$x2 = rnorm(100,  5,7)
  lm = lm(y ~ x1 + x2, data = x)

  return(c(coef(lm)[2], coef(lm)[3]))
})

head(t(res))
#               x1           x2
# [1,]  0.01293551 -0.002520876
# [2,]  0.00294546 -0.034689928
# [3,]  0.05614309  0.049577728
# [4,] -0.02323345 -0.025082705
# [5,] -0.01016728  0.023558755
# [6,] -0.05317357  0.024496896

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM