gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 14:51:30 34 4
gpt4 key购买 nike

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

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中有完成相同功能的功能?

最佳答案

您的rbind方法应该运行良好。您也可以使用

rpois(lambda=c(3,4),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, 3), rpois(5e+05, 4))) 100 23.390 1.112168
# 1 rpois(1e+06, c(3, 4)) 100 21.031 1.000000


当然, c(rbind(...))方法通常适用于构造交替向量,而另一种解决方案特定于 rpois或以这种方式复制其参数的其他函数,当然这是情人的眼神。

关于r - 交替,交织或交织两个向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12044616/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com