我想在特定行之后结束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")
Run Code Online (Sandbox Code Playgroud)
真的感谢您的建议!
Rob*_*ski 15
只需使用当前系统时间通过引入新的唯一随机种子来"撤消"种子:
set.seed(Sys.time())
Run Code Online (Sandbox Code Playgroud)
如果您需要更高的精度,请考虑以毫秒为单位获取系统时间戳(使用R的system(..., intern = TRUE)
函数).
Aks*_*dal 13
set.seed()仅适用于下一次执行.所以你想要的已经发生了.
看这个例子
set.seed(12)
sample(1:15, 5)
Run Code Online (Sandbox Code Playgroud)
[1] 2 12 13 4 15
sample(1:15, 5) # run the same code again you will see different results
Run Code Online (Sandbox Code Playgroud)
[1] 1 3 9 15 12
set.seed(12)#set seed again to see first set of results
sample(1:15, 5)
Run Code Online (Sandbox Code Playgroud)
[1] 2 12 13 4 15
Car*_*hen 11
set.seed(NULL)
Run Code Online (Sandbox Code Playgroud)
查看帮助文档- ?set.seed
:
“如果使用seed = NULL进行调用,它将重新初始化(请参阅'注释'),就像尚未设置任何种子一样。”