【发布时间】:2021-01-22 15:03:20
【问题描述】:
我想删除从向量中随机选择的 n 个元素,其中 n 大于或等于 0。
n 是从二项式中采样的,很小,可能为 0。
我想尽可能高效地执行此操作,以便代码可以多次运行。问题是如果 n = 0,使用 vec[-sample(vec,n)] 可能会给出一个空向量。
我有几个想法,我想知道是否有人知道解决问题的更好或更快的方法。
- 使用减号,之前使用 if 函数。
# y is a vector of length 10000
n <- rbinom(n = 1, size = 10000, p = 0.0001)
if (length(n) != 0){
y <- y[-sample((1:10000), size = n)]
}
- 选择所有其他元素。
# y is a vector of length 10000
n <- rbinom(n = 1, size = 10000, p = 0.0001)
n <- 10000 - n
y <- sample(y, size = n)
【问题讨论】:
标签: r performance syntax