我想在特定行之后结束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")
真的感谢您的建议!
答案 0 :(得分:13)
只需使用当前系统时间即可撤消&#34;种子通过引入一种新的独特随机种子:
set.seed(Sys.time())
如果您需要更高的精确度,请考虑提取system timestamp by millisecond(使用R&#39; s system(..., intern = TRUE)
功能。)
答案 1 :(得分:7)
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 results
[1] 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
答案 2 :(得分:5)
set.seed(NULL)
查看帮助文档-?set.seed
:
“如果使用seed = NULL进行调用,则会重新初始化(请参阅“注意”),就像尚未设置任何种子一样。”
答案 3 :(得分:0)
set.seed()仅适用于包含随机样本的第一行,不会影响下一个命令。如果您希望它适用于其他行,则必须使用相同的“种子” - 参数调用set.seed函数。