我想为每个A号分配一个随机数B.
条件是B分配的数字必须大于A的相应数字。
这是我的代码。
有没有办法更快地做到这一点?
我尝试使用for循环和其他方法,结果最差!
非常感谢!
set.seed(123)
A <- rlnorm(10000,5,1)
B <- rlnorm(100000,10,2)
df <- data.frame(NumPol=1:length(B), Cap=B)
pol_sel <- sapply(1:length(A), FUN = function(i) {
sample(df$NumPol[which(df$Cap > A[i])], size=1, replace=TRUE) } )
答案 0 :(得分:0)
对于A中的每个元素a
,从B中大于a
的元素中抽取一个实例将由下式给出:
sapply(A, function(a) sample(B[B > a], size = 1, replace = TRUE))
如果速度不够快,您可以使用mclapply代替sapply
进行并行化(这应该没问题,因为您使用replace = TRUE
并且采样是独立的。)< / p>