我有两个向量
x <- c(2, 3, 4)
y <- rep(0, 5)
我希望得到如下输出:
> z
2, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0
我该如何创建
z
?我尝试使用paste
和c
,但是似乎都没有效果。我唯一能想到的就是使用for()
,但它非常慢。我已经在谷歌上搜索过,并且确定解决方案存在,只是我没有使用正确的关键词。更新: 为了进行基准测试:
使用Nicola的解决方案:
> system.time(
+ precipitation <- `[<-`(numeric(length(x)*(length(y)+1)),seq(1,by=length(y)+1,length.out=length(x)),x)
+ )
user system elapsed
0.419 0.407 0.827
这太快了!我必须说!有人能解释一下吗?我的for()
在R
中总是错误的,即使它完成了,也需要至少一天。
其他建议:
> length(prate)
[1] 4914594
> length(empty)
[1] 207
> system.time(
+ precipitation <- unlist(sapply(prate, FUN = function(prate) c(prate,empty), simplify=FALSE))
+ )
user system elapsed
16.470 3.859 28.904
我必须杀死。
len <- length(prate)
precip2 <- c(rbind(prate, matrix(rep(empty, len), ncol = len)))
15分钟后。
rep(x, each=length(y)+1)*c(1,y)
。 - akruny
全为零时,我进行了编辑以加快速度。 - nicola