gpt4 book ai didi

r - 在 R 中生成 n 个不同的值 x 次

转载 作者:行者123 更新时间:2023-12-02 09:23:08 27 4
gpt4 key购买 nike

我想创建一个具有 1 到 20 三十次不同值但不均匀的向量。

例如:可以有四次计数为 1、一次计数为 2、两次计数为 3 等等。但每个数字的计数必须加起来为 30,并且必须有 20 个不同的值。

我尝试过:

set.seed(3) 
sample(x = 1:20, size = 30, replace = TRUE)

但它并不总是给出从 1 到 20 的所有值。有些值返回的次数较多,有些值根本不返回。

我想创建一个具有所有不同值的向量,并且数字必须是整数。

最佳答案

您可以分三次完成:

  • 生成没有替换的 20 号样本:每个值都有 1 次

  • 生成带有替换件的 10 号样本

  • 对两个样本进行采样

这是结果

a <- sample(1:20, 20)
b <- sample(1:20, 10, replace = TRUE)
result <- sample(c(a, b), 30)

# result
# [1] 1 10 20 11 16 12 9 8 20 4 15 2 7 5 19 18 6 13 14 17 11 5 1 7 4 19 6 16 3 3

# table(result) # every value appear at least one time
# result
# 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
# 2 1 2 2 2 2 2 1 1 1 2 1 1 1 1 2 1 1 2 2

请注意,您可以用一行代码来完成:

sample(c(sample(1:20, 20), sample(1:20, 10, replace = TRUE)), 30)

# [1] 4 13 15 20 6 5 9 11 11 14 17 1 10 9 3 10 11 12 18 17 8 7 18 12 19 16 2 13 13 4

感谢James的评论,您可以使用更快的解决方案:

sample(c(1:20,sample(20,10,replace=TRUE)))

这是微基准比较:

# Unit: relative
# expr min lq mean median uq max neval
# etienne 1.727202 1.538411 1.529077 1.571341 1.5998 0.6855444 1000
# james 1.000000 1.000000 1.000000 1.000000 1.0000 1.0000000 1000

关于r - 在 R 中生成 n 个不同的值 x 次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40242783/

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