【发布时间】:2018-03-27 09:19:19
【问题描述】:
我正在研究中等规模的数据集,比如从一个包含 100,000 个观测值的大型数据集中抽取 9000 个观测值。
我可以使用下面的set.seed() 函数来保证我每次都得到完全相同的子集吗?
set.seed(10000)
set.seed() 可以使用的最大值是多少?
【问题讨论】:
标签: r
我正在研究中等规模的数据集,比如从一个包含 100,000 个观测值的大型数据集中抽取 9000 个观测值。
我可以使用下面的set.seed() 函数来保证我每次都得到完全相同的子集吗?
set.seed(10000)
set.seed() 可以使用的最大值是多少?
【问题讨论】:
标签: r
来自?set.seed 文档:
seed 单个值,解释为整数或 NULL(请参阅 “详细信息”)。
所以最大值将是允许的最大整数:
.Machine$integer.max
[1] 2147483647
一个简单的测试:
set.seed(2147483647)
set.seed(2147483648)
set.seed(2147483648) 中的错误:提供的种子不是有效的整数 另外:警告信息: 在 set.seed(2147483648) 中:通过强制引入整数范围的 NAs
您为什么对此感兴趣?通常你应该只设置一次种子,传递给它的数字应该是无关紧要的。
无论如何:
help("set.seed")
seed:单个值,解释为整数或 NULL(请参阅 “详细信息”)。
set.seed(.Machine$integer.max)
set.seed(.Machine$integer.max + 1)
#Error in set.seed(.Machine$integer.max + 1) :
# supplied seed is not a valid integer
#In addition: Warning message:
#In set.seed(.Machine$integer.max + 1) :
# NAs introduced by coercion to integer range
.Machine$integer.max
#[1] 2147483647
【讨论】:
set.seed。像for(i in 1:n) {set.seed(i); x[i] <- rnorm(1)} 这样的东西。那不是他们应该做的事情。如果您需要在同一个 R 会话中的每次抽奖中使用相同的样本,您应该只存储该样本。如果您在不同的 R 会话中需要相同的样本,您仍然只需要一个种子。