R将相同的值赋给向量的多个元素

R将相同的值赋给向量的多个元素,r,loops,vector,elements,R,Loops,Vector,Elements,我很难将相同的值分配给向量的多个元素。以下是我的非工作示例: dog <- c() year <- c(1980,1990) for (i in 1:2){ dog[(i*1):(i*12)]<- unique(year)[i] } dog如果你展开循环,你所做的就是 dog <- c() year <- c(1980,1990) dog[1:12]<- unique(year)[1] dog[2:24]<- unique(year)[2]

我很难将相同的值分配给向量的多个元素。以下是我的非工作示例:

dog <- c()
year <- c(1980,1990)
for (i in 1:2){
     dog[(i*1):(i*12)]<- unique(year)[i]
}

dog如果你展开循环,你所做的就是

dog <- c()
year <- c(1980,1990)
dog[1:12]<- unique(year)[1]
dog[2:24]<- unique(year)[2]
第二个作业几乎覆盖了所有内容。我不确定您是否希望值交替使用,或者是否希望将值分组在一起,但是您可以使用

rep(year, each=12)
#  [1] 1980 1980 1980 1980 1980 1980 1980 1980 1980 1980
# [11] 1980 1980 1990 1990 1990 1990 1990 1990 1990 1990
# [21] 1990 1990 1990 1990


dog关于代码的几个注意事项:(1)最好在循环和修改之前预先分配向量(如果你知道它的最终“长度”);e、 g.参见
x1=c();x2=代表(NA,1e5);系统时间(对于(1:1e5中的i)x1[i]=i);系统时间(对于(1:1e5中的i)x2[i]=i);相同(x1,x2)
。(2) 如果只需调用一次,请避免在循环中多次调用同一函数-在这里,可以在循环之前将
unique(year)
保存在变量中,并在循环中使用它。(3)此特定任务不需要循环,但我想,您可以使用类似
dog[((I-1)*12)+1:(I*12)]
以解决此问题。
rep(year, each=12)
#  [1] 1980 1980 1980 1980 1980 1980 1980 1980 1980 1980
# [11] 1980 1980 1990 1990 1990 1990 1990 1990 1990 1990
# [21] 1990 1990 1990 1990
rep(year, times=12)
#  [1] 1980 1990 1980 1990 1980 1990 1980 1990 1980 1990
# [11] 1980 1990 1980 1990 1980 1990 1980 1990 1980 1990
# [21] 1980 1990 1980 1990