我正在阅读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循环,我很好奇吗?
答案 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) )