gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 07:37:04 25 4
gpt4 key购买 nike

在这个网站上的人的帮助下,我有一个矩阵 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com