交替,交织或交错两个向量
发布时间:2020-12-14 05:04:47 所属栏目:Java 来源:网络整理
导读:我要交错相同模式和等长的两个向量.说: 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=5
我要交错相同模式和等长的两个向量.说:
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或其他功能,复制他们的参数那样. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |