【发布时间】:2021-07-31 20:11:00
【问题描述】:
我有两个问题:
- 我正在做一个模拟,我编写了必要的函数,并且我正在使用以下代码在循环中生成我需要的内容:
sim_seeds<- as.vector(sample(1:30000, 5, replace = FALSE), mode = "numeric")
save(sim_seeds,file = "~/Desktop/untitled folder/sim_seeds.Rda")
load(file = "~/Desktop/untitled folder/sim_seeds.Rda")
for (i in 1:5) {
load(file = "~/Desktop/untitled folder/sim_seeds.Rda")
seeds=set.seed(sim_seeds[i])
#Generating data using functions had been wrote before
data<-generate_data(seed =seeds )
Y_1<- mean(data$Y)
#estimation
weights<-generate_weights(T1=S1~Year+growth, T2=R1~Age+Sex+HIV, data=data)
w<-weights$w
g<-g_est(data=data)
p1<-g$p1
Q<-Q_est(data=data,w , p1)
mu1_Q<-Q$mu1
#Results
results <- rbind(seeds,Y_1,mu1_Q)
results
}
我的问题是关于种子的!我想要做的是生成 5 个不同的数据集,但是每次“for”运行时我都需要一个单独的种子,所以我想创建一个种子向量,然后在每次循环运行时调用第 i 个值,但是当我想在循环中调用它时,它会给出一个 NULL 值!
- 其他问题是,我希望将最终结果保存并彼此相邻打印,以便我可以比较它们。所以说简单点,我在生成5个不同的数据集,所以我在“结果”中确定了5行元素!
有人知道吗?
【问题讨论】:
-
我不认为你需要为每个循环迭代生成一个新的种子来获得不同的结果。脚本开头的 set.seed(123) 足以获得不同的结果(但每次重新运行脚本时结果相同)
-
@glagla 主管的命令!她说你不应该在每次运行循环时都为种子分配相似的数字。
-
我认为当您在循环开始时使用相同的种子值执行 set.seed 时会出现问题。在这种情况下,它会重新初始化随机生成器并生成相同的数字。不要这样做:for (I in 1:5) {set.seed(1); generate_something},但是做 set.seed(1) 然后循环就好了
标签: r loops statistics simulation random-seed