我希望在特定行之后结束set.seed()的作用域,以便对其余代码进行真正的随机化。下面是一个示例,其中我希望set.seed()为"rnorm“(第4行)工作,而不对"nrow”(第9行)工作。
set.seed(2014)
f<-function(x){0.5*x+2}
datax<-1:100
datay<-f(datax)+rnorm(100,0,5)
daten<-data.frame(datax,datay)
model<-lm(datay~datax)
plot(datax,datay)
abline(model)
a<-daten[sample(nrow(daten),20),]
points(a,col="red",pch=16)
modela<-lm(a$datay~a$datax)
abline(modela, col="red")确实,谢谢你的建议!
发布于 2014-03-29 07:46:28
只需使用当前的系统时间,通过引入一个新的唯一随机种子来“撤消”种子:
set.seed(Sys.time())如果需要更高的精度,可以考虑获取system timestamp by millisecond (使用R的system(..., intern = TRUE)函数)。
发布于 2018-10-25 09:20:51
set.seed(NULL)参见帮助文档- ?set.seed
“如果调用了seed = NULL,它就会重新初始化(参见‘Note’),就好像还没有设置任何种子一样。”
发布于 2017-08-30 08:47:50
set.seed()只适用于下一次执行。所以你想要的已经发生了。
参见此示例
set.seed(12)
sample(1:15, 5)1 2 12 13 4 15
sample(1:15, 5) # run the same code again you will see different results1 1 3 9 15 12
set.seed(12)#set seed again to see first set of results
sample(1:15, 5)1 2 12 13 4 15
https://stackoverflow.com/questions/22728422
复制相似问题