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

时间:2013-11-27 15:48:30

标签: 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循环,我很好奇吗?

2 个答案:

答案 0 :(得分:2)

我认为使用rnorm(20)的方向更加困惑,更好:

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

然后一切都只是按照它应该回收

答案 1 :(得分:1)

这是代码的替代方案。我使用高度优化的apply函数。

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