交替,交织或交织两个向量

我想交织相同模式和相等长度的两个向量。说:


a <- rpois(lambda=3,n=5e5)

b <- rpois(lambda=4,n=5e5)

我想交织或交织这两个向量,以创建一个等效的向量 c(a[1],b[1],a[2],b[2],...,a[length(a)],b[length(b)])


我的第一次尝试是:


sapply(X=rep.int(c(3,4),times=5e5),FUN=rpois,n=1)

但是它需要rpois被调用的次数远远超过了需要。


到目前为止,我最好的尝试是将其转换为矩阵,然后重新转换为向量:


d <- c(rbind(rpois(lambda=3,n=5e5),rpois(lambda=4,n=5e5)))

d <- c(rbind(a,b))

有没有更好的方法去做呢?还是库中R有完成相同功能的功能?


梵蒂冈之花
浏览 666回答 2
2回答

ABOUTYOU

您的rbind方法应该可以正常工作。您也可以使用rpois(lambda=c(3,4),n=1e6)因为R会自动将lambda值向量复制到所需的长度。速度差别不大:library(rbenchmark)benchmark(rpois(1e6,c(3,4)),&nbsp; &nbsp; &nbsp;c(rbind(rpois(5e5,3),rpois(5e5,4))))#&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; test replications elapsed relative# 2 c(rbind(rpois(5e+05, 3), rpois(5e+05, 4)))&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 100&nbsp; 23.390 1.112168# 1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; rpois(1e+06, c(3, 4))&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 100&nbsp; 21.031 1.000000当然,这种c(rbind(...))方法通常适用于构造交替向量,而其他解决方案特定于rpois或以这种方式复制其参数的其他函数。
打开App,查看更多内容
随时随地看视频慕课网APP