【发布时间】:2014-08-19 07:48:10
【问题描述】:
我无法为向量的多个元素分配相同的值。这是我的非工作示例:
dog <- c()
year <- c(1980,1990)
for (i in 1:2){
dog[(i*1):(i*12)]<- unique(year)[i]
}
我希望 dog 向量具有 12 个 1980 和 12 个 1990。但我得到的是 1980 和 1990,然后是 22 个 NA。下一步是什么?
【问题讨论】:
-
dog <- rep(c(1980, 1990), each = 12)? -
关于您的代码的几点说明: (1) 最好在循环和修改它之前预先分配您的向量(如果您知道它的最终“长度”);例如见
x1 = c(); x2 = rep(NA, 1e5); system.time(for(i in 1:1e5) x1[i] = i); system.time(for(i in 1:1e5) x2[i] = i); identical(x1, x2)。 (2) 如果您可以只调用一次,请避免在循环内多次调用相同的函数 - 在这里,您可以在循环前将unique(year)保存在变量中,然后在循环内使用它。 -
(3) 这个特定的任务不需要循环,但我猜你可以使用
dog[(((i - 1) * 12) + 1):(i * 12)]之类的东西来解决这个问题。