簡體   English   中英

在R中使用向量而不是循環

[英]Using vectors instead of loops in R

我正在瀏覽R教程http://data.princeton.edu/R/gettingStarted.html在頁面的末尾,他們要求“使用x向量模擬來自回歸模型Y = a + bx + e的20個觀測值設置a = 1和b = 2.使用標准正態誤差生成為rnorm(20),其中20是觀測值。“ 我能想到的唯一方法就是:

error <- rnorm(20)
x <- 1:10
Y <- matrix(rep(1,200),20,10)
for (i in seq(1,20,1)) {
  Y[i,1:10] <- 1+2*x+error[i]
  }

這似乎有效,但我很好奇是否有更優雅的解決方案,沒有for循環,是否可用?

我認為使用rnorm(20)的方向會讓人感到困惑,更好:

a=1
b=2
x=1:10
replicate(20, a+(b*x)+rnorm(1))

然后一切都按照應有的方式進行回收

這是代碼的替代方案。 我使用高度優化的apply功能。

> set.seed(1)
> error <- rnorm(20)
> x <- 1:10
> t(apply(matrix(error), 1, function(e) 1 + (2*x) + e) )

暫無
暫無

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

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