如何采样1:x其中x是长度大于1的随机整数的向量

时间:2013-04-23 18:19:56

标签: r

示例代码

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'的第一个值

2 个答案:

答案 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]