r - 如何在向量的元素之间随机分配数字?在 R

标签 r random vector

这是我的问题。

假设我有一个向量:

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 中有什么简单的方法可以做到这一点吗?

非常感谢您。

蒂娜。

最佳答案

编辑:

这样更好,因为它几乎肯定会以您期望的相对频率生成各种分区:

as.vector(rmultinom(1, size=length(vec), prob=rep(1, length(vec))))
# [1] 4 0 1 0 1 0

你在这里找到的组合对象叫做 "partition" . partitions 包包含许多用于生成不同类型分区的漂亮函数。通过对 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

关于r - 如何在向量的元素之间随机分配数字?在 R,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15735987/

相关文章:

r - 如何使用 rJython 发送包含希腊字符的电子邮件?

r - 如何解决此错误 : attempt to set 'rownames' on an object with no dimensions

c++ - 链表删除元素出现随机整数

go - rand.Reader读取时可能会报错?

c++ - 以 vector 为成员变量的对象复制构造函数

c++ - Objective-C++调整大小实例 vector 不起作用

c++ - 如何在 OpenGL 中绘制 3D vector ?

r - 在 R 中绘制 GLM 模型

r - 使用不同长度的元素添加到 ggplot

在 vim 中执行的 Python 随机数列表