首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在特定代码行之后停止set.seed()?

如何在特定代码行之后停止set.seed()?
EN

Stack Overflow用户
提问于 2014-03-29 07:42:23
回答 4查看 22.7K关注 0票数 26

我希望在特定行之后结束set.seed()的作用域,以便对其余代码进行真正的随机化。下面是一个示例,其中我希望set.seed()为"rnorm“(第4行)工作,而不对"nrow”(第9行)工作。

代码语言:javascript
复制
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")

确实,谢谢你的建议!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-03-29 07:46:28

只需使用当前的系统时间,通过引入一个新的唯一随机种子来“撤消”种子:

代码语言:javascript
复制
set.seed(Sys.time())

如果需要更高的精度,可以考虑获取system timestamp by millisecond (使用R的system(..., intern = TRUE)函数)。

票数 22
EN

Stack Overflow用户

发布于 2018-10-25 09:20:51

代码语言:javascript
复制
set.seed(NULL)

参见帮助文档- ?set.seed

“如果调用了seed = NULL,它就会重新初始化(参见‘Note’),就好像还没有设置任何种子一样。”

票数 38
EN

Stack Overflow用户

发布于 2017-08-30 08:47:50

set.seed()只适用于下一次执行。所以你想要的已经发生了。

参见此示例

代码语言:javascript
复制
set.seed(12)
sample(1:15, 5)

1 2 12 13 4 15

代码语言:javascript
复制
sample(1:15, 5) # run the same code again you will see different results

1 1 3 9 15 12

代码语言:javascript
复制
set.seed(12)#set seed again to see first set of results
sample(1:15, 5)

1 2 12 13 4 15

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22728422

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档