我想设定中的R种子只能在本地(内部功能),但似乎r设置种子不仅在本地,而且在全球。 下面是我想要什么(不)做一个简单的例子。
myfunction <- function () {
set.seed(2)
}
# now, whenever I run the two commands below I'll get the same answer
myfunction()
runif(1)
所以,我的问题是:为什么R SET的种子全球而不仅仅是我的函数里面? 和我如何可以使R键只设置种子我的函数内?
这样的事情确实对我来说:
myfunction <- function () {
old <- .Random.seed
set.seed(2)
res <- runif(1)
.Random.seed <<- old
res
}
或许更优雅:
myfunction <- function () {
old <- .Random.seed
on.exit( { .Random.seed <<- old } )
set.seed(2)
runif(1)
}
例如:
> myfunction()
[1] 0.1848823
> runif(1)
[1] 0.3472722
> myfunction()
[1] 0.1848823
> runif(1)
[1] 0.4887732