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

我要交错相同模式和等长的两个向量.说:
a <- rpois(lambda=3,n=5e5)
b <- rpois(lambda=4,n=5e5)

我想交织或交错这两个向量,创建一个等价的c(a [1],b [1],a [2],b [2],…,a [length )],b [长度(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中有功能完成同样的事情?

解决方法

你的rbind方法应该很好.你也可以使用
rpois(lambda=c(3,n=1e6)

因为R将自动将lambda值的向量复制到所需的长度.速度没有太大的区别:

library(rbenchmark)
benchmark(rpois(1e6,c(3,4)),c(rbind(rpois(5e5,3),rpois(5e5,4))))


#                                        test replications elapsed relative
# 2 c(rbind(rpois(5e+05,rpois(5e+05,4)))          100  23.390 1.112168
# 1                      rpois(1e+06,4))          100  21.031 1.000000

优雅是在旁观者的眼中…当然,c(rbind(…))方法一般用于构建交替向量,而另一种解决方案是特定于rpois或其他功能,复制他们的参数那样.

相关文章

最近看了一下学习资料,感觉进制转换其实还是挺有意思的,尤...
/*HashSet 基本操作 * --set:元素是无序的,存入和取出顺序不...
/*list 基本操作 * * List a=new List(); * 增 * a.add(inde...
/* * 内部类 * */ 1 class OutClass{ 2 //定义外部类的成员变...
集合的操作Iterator、Collection、Set和HashSet关系Iterator...
接口中常量的修饰关键字:public,static,final(常量)函数...