【发布时间】:2021-04-20 08:14:11
【问题描述】:
我需要交叉验证python 中的R 代码。我的代码包含许多伪随机数生成,因此,为了更容易比较,我决定使用rpy2 在我的python 代码“来自R”中生成这些值。
例如,在 R 中,我有:
set.seed(1234)
runif(4)
[1] 0.1137034 0.6222994 0.6092747 0.6233794
在 python 中,使用rpy2,我有:
import rpy2.robjects as robjects
set_seed = robjects.r("set.seed")
runif = robjects.r("runif")
set_seed(1234)
print(runif(4))
[1] 0.1137034 0.6222994 0.6092747 0.6233794
如预期的那样(值相似)。但是,我在使用 R sample 函数(相当于 numpy.random.choice 函数)时遇到了一个奇怪的行为。
作为最简单的可重现示例,我在R:
set.seed(1234)
sample(5)
[1] 1 3 2 4 5
在python 我有:
sample = robjects.r("sample")
set_seed(1234)
print(sample(5))
[1] 4 5 2 3 1
结果不同。谁能解释为什么会发生这种情况和/或提供一种使用 R sample 函数在 R 和 python 中获取相似值的方法?
【问题讨论】: