R 使用样本创建具有随机数的矩阵列

标签 r matrix

在这个网站上的人的帮助下,我有一个矩阵 y 看起来与此类似(但更简化)。

1,3
1,3
1,3
7,1
8,2
8,2

我创建了第三列来生成随机数(无需使用此代码替换每个重复 block j=cbind(y,sample(1:99999,y[,2],replace=FALSE) )

矩阵 j 看起来像这样:

1,3,4520
1,3,7980
1,3,950
7,1,2
8,3,4520
8,3,7980
8,3,950

我如何为我的第三列获得真正的随机数,以便对于每个重复行,即 3,然后 1,然后 2,我得到一个随机数,该随机数不会在该重复部分中复制(replace = FALSE )?

最佳答案

为什么会这样:

问题是 sample 命令结构是:

sample(vector of values, how many?, replace = FALSE or TRUE)

在这里,“有多少?”应该是一个值。由于您提供了 y 的整个第二列,它只选择第一个值,即 3,因此它显示为:

set.seed(45) # just for reproducibility
sample(1:99999, 3, replace = F)

对于这个种子,值是:

# [1] 63337 31754 24092

并且由于只有 3 个值,您将它绑定(bind)到具有 6 行的矩阵,它会“回收”这些值(意思是,它以相同的顺序重复这些值)。所以,你得到:

#      [,1] [,2]  [,3]
# [1,]    1    3 63337
# [2,]    1    3 31754
# [3,]    1    3 24092
# [4,]    7    1 63337
# [5,]    8    2 31754
# [6,]    8    2 24092

查看值是否重复。对于您显示的矩阵,我不知道 7,1,2 是如何发生的。作为 y[,2] = 3 中矩阵的第一个值。

您应该怎么做:

y <- cbind(y, sample(1:99999, nrow(y), replace = FALSE))

这要求 sample 生成 nrow(y) = 6(这里)值而不用替换。这将生成长度为 6 的不同值,并将绑定(bind)到您的矩阵 y

关于R 使用样本创建具有随机数的矩阵列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15163355/

相关文章:

r - 日期时间对象到分钟 : I need 3 packages

flutter - 你应该如何进行矩阵变换?

java - 为什么我的二维数组/矩阵打印错误?

c++ - Matlab 语法帮助。'*

c - 从 C 中的文件填充矩阵

r - 从矩阵中的每一列获取最小值的最快方法?

r - 使用 R/tidyverse 中的 pivot_wider() 将所有列旋转得更宽(ID 列除外)

R,将数字输入转换为受上限限制的循环数字输出的函数

r - R 函数 nlminb() 使用的函数

r - 有没有办法为 RStudio 中的 Knit 按钮指定中间体_dir?