gpt4 book ai didi

R 示例函数发出超过 1000 万个值

转载 作者:行者123 更新时间:2023-12-02 09:15:43 26 4
gpt4 key购买 nike

我在 R 中发现了这个怪癖,但找不到太多证据来证明它为什么会发生。我试图重新创建一个示例作为检查,发现 sample 函数在某些情况下的行为有所不同。请参阅此示例:

# Look at the first ten rows of a randomly ordered vector of the first 10 million integers
set.seed(4)
head(sample(1:10000000), 10)
[1] 5858004 89458 2937396 2773749 8135739 2604277 7244055 9060916 9490395 731445

# Select a specified sample of size 10 from this same list
set.seed(4)
sample(1:10000000), size = 10)
[1] 5858004 89458 2937396 2773749 8135739 2604277 7244055 9060916 9490395 731445


# Try the same for sample size 10,000,001
set.seed(4)
head(sample(1:10000001), 10)
[1] 5858004 89458 2937396 2773750 8135740 2604277 7244056 9060917 9490396 731445

set.seed(4)
sample(1:10000001), size = 10)
[1] 5858004 89458 2937397 2773750 8135743 2604278 7244060 9060923 9490404 731445

我测试了高达 1000 万个阈值的许多值,并发现这些值匹配(尽管我承认没有测试超过 10 个输出行)。

有人知道这是怎么回事吗?这 1000 万这个数字有什么重要意义吗?

最佳答案

是的,1e7 有一些特别之处。如果您查看 sample 代码,它最终会调用 sample.int。正如您在 ?sample 中看到的,sample.intuseHash 参数的默认值为

useHash = (!replace && is.null(prob) && size <= n/2 && n > 1e7)

&& n > 1e7 意味着当您达到 1e7 以上时,默认首选项将切换为 useHash = TRUE。如果您希望保持一致性,请直接调用 sample.int 并指定 useHash 值。 (TRUE 是提高内存效率的不错选择,有关详细信息,请参阅 ?sample 中的参数描述。)

关于R 示例函数发出超过 1000 万个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47398232/

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