示例代码
population <- 10000
vec <- sample(1:6, population, replace=T)
output <- sample(1:vec, population, replace=T)
警告:数值表达式有10000个元素:只使用第一个元素。
样本试图为每个选择更改样本的限制,因此一次迭代应该在1:2之间随机采样,另一次迭代可以在1:6之间。最大值在'vec'
中定义构造这条直线的正确方法是什么,它知道将'output'创建为长度为10,000的向量,并正确引用'vec'中的最大值?目前,它只对'output'
中的所有10000个样本使用'vec'的第一个值答案 0 :(得分:2)
也许使用sapply
循环vec
:
out <- sapply(vec,sample,size = 1)
答案 1 :(得分:0)
另一种方法:创建一个矩阵,其中列是使用不同数字的样本。然后构建一个随机从每行中获取值的向量。我认为这可能会更快,但两种方式都非常快。
population <- 1e4
samp.mat <- sapply(1:6,sample.int,size=population,replace=TRUE)
indices <- cbind(seq_len(nrow(samp.mat)),sample.int(6,nrow(samp.mat),replace=TRUE))
out <- a[indices]