2

示例代码

population <- 10000
vec <- sample(1:6, population, replace=T)    
output <- sample(1:vec, population, replace=T)

警告:数值表达式有 10000 个元素:只使用第一个。

样本试图改变每个选择的样本限制,因此一次迭代应该在 1:2 之间随机抽样,另一个可能在 1:6 之间。最大值在'vec'中定义

构造这条线的正确方法是什么,使其知道将“输出”创建为长度为 10,000 的向量,并正确引用“vec”中的最大值?目前,它仅对“输出”中的所有 10000 个样本使用“vec”的第一个值

4

2 回答 2

2

也许用于sapply循环vec

out <- sapply(vec,sample,size = 1)
于 2013-04-23T18:28:26.540 回答
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]
于 2013-04-23T18:43:34.353 回答