我想交織相同模式和相等長度的兩個向量。說:a <- rpois(lambda=3,n=5e5)b <- rpois(lambda=4,n=5e5)我想交織或交織這兩個向量,以創(chuàng)建一個等效的向量 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被調(diào)用的次數(shù)遠遠超過了需要。到目前為止,我最好的嘗試是將其轉(zhuǎn)換為矩陣,然后重新轉(zhuǎn)換為向量:d <- c(rbind(rpois(lambda=3,n=5e5),rpois(lambda=4,n=5e5)))d <- c(rbind(a,b))有沒有更好的方法去做呢?還是庫中R有完成相同功能的功能?
2 回答

ABOUTYOU
TA貢獻1812條經(jīng)驗 獲得超5個贊
您的rbind方法應(yīng)該可以正常工作。您也可以使用
rpois(lambda=c(3,4),n=1e6)
因為R會自動將lambda值向量復(fù)制到所需的長度。速度差別不大:
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(...))方法通常適用于構(gòu)造交替向量,而其他解決方案特定于rpois或以這種方式復(fù)制其參數(shù)的其他函數(shù)。
- 2 回答
- 0 關(guān)注
- 700 瀏覽
添加回答
舉報
0/150
提交
取消