这是我的问题。如何在矢量元素中随机分配数字?在R
假设我有一个矢量:
vec <- c("a","b","c","d","e","f")
,我想我的矢量的元素中随机地分配6个值,在有时一个元素获得的东西,有时会(1和6之间)的方式什么都没有,但总是值的总和必须总结为6。因此,在一个实例例如价值将得到分布是这样的:
3,0,1,0,2,0
在另一个这样的:
1,0,1,1,2,1
等等。
有没有简单的方法来做到这一点在R?
非常感谢你提前。
Tina。
这是我的问题。如何在矢量元素中随机分配数字?在R
假设我有一个矢量:
vec <- c("a","b","c","d","e","f")
,我想我的矢量的元素中随机地分配6个值,在有时一个元素获得的东西,有时会(1和6之间)的方式什么都没有,但总是值的总和必须总结为6。因此,在一个实例例如价值将得到分布是这样的:
3,0,1,0,2,0
在另一个这样的:
1,0,1,1,2,1
等等。
有没有简单的方法来做到这一点在R?
非常感谢你提前。
Tina。
编辑:
这是更好,因为它几乎肯定会产生与相对频率不同分区,你希望:
as.vector(rmultinom(1, size=length(vec), prob=rep(1, length(vec))))
# [1] 4 0 1 0 1 0
的组合对象你在此之后被称为"partition"。 分区包中包含许多用于生成不同风格分区的漂亮函数。稍微调整一下parts()
函数的输出结果,我们就可以得到你正在寻找的东西。
library(partitions)
## Create a function
randPartition <- function(vec) {
pp <- parts(length(vec))
sample(pp[,sample(ncol(pp), 1)])
}
## Try it out a few times
randPartition(vec)
# [1] 1 1 1 1 1 1
randPartition(vec)
# [1] 2 0 0 2 0 2
randPartition(vec)
# [1] 0 0 0 0 0 6
您是否在寻找具有替代品的样品? –