R:存储循环的结果

问题描述

我正在使用 R。我编写了以下程序,该程序为一系列数据操作步骤创建了一个表:

#load library 
library(dplyr)
 set.seed(123)
 
 # data
 a1 = rnorm(1000,100,10)
 b1 = rnorm(1000,5)
 c1 = sample.int(1000,1000,replace = TRUE)
 train_data = data.frame(a1,b1,c1)

#generate random numbers
 random_1 =  runif(1,80,120)
random_2 =  runif(1,random_1,120)
 random_3 =  runif(1,85,120)
 random_4 =  runif(1,random_3,120)

#bin data according to random criteria
train_data <- train_data %>% mutate(cat = ifelse(a1 <= random_1 & b1 <= random_3,"a",ifelse(a1 <= random_2 & b1 <= random_4,"b","c"))) 

#calculate 60th quantile ("quant") for each bin
final_table = data.frame(train_data %>% group_by(cat) %>%
mutate(quant = quantile(c1,prob = .6)))

#create a new variable ("diff") that measures if the quantile is bigger tha the value of "c1"
final_table$diff = ifelse(final_table$quant > final_table$c1,1,0)

#create a table: for each bin,calculate the average of "diff"
final_table_2 = data.frame(final_table %>% 
  group_by(cat) %>% 
  summarize(
   mean = mean(diff)
  ))

#add "total mean" to this table
final_table_2 = data.frame(final_table_2 %>% add_row(cat = "total",mean = mean(final_table$diff)))

#format this table: add the random criteria to this table for reference
final_table_2$random_1 = random_1

final_table_2$random_2 = random_2

final_table_2$random_3 = random_3

final_table_2$random_4 = random_4

 #optional: view table
 head(final_table_2)

    cat      mean random_1 random_2 random_3 random_4
1     a 0.5897436 95.67371 111.8133 94.00313 102.0569
2     b 0.5992366 95.67371 111.8133 94.00313 102.0569
3     c 0.5995423 95.67371 111.8133 94.00313 102.0569
4 total 0.5990000 95.67371 111.8133 94.00313 102.0569

现在,我正在尝试创建一个循环,该循环将这个过程重复 10 次 - 对于每次迭代,它应该将新结果“堆叠”在旧结果之上(即保留所有内容)。

我尝试设置基本循环结构:

for (i in 1:10 ) { 
for (j in 1:10 ) { 
    for (k in 1:10) {
        for (l in 1:10)  {

for (m in 1:10)  {

 random_i =  runif(1,120)
random_j =  runif(1,120)


 random_k =  runif(1,120)
 random_l =  runif(1,120)


train_data <- train_data %>% mutate(cat = ifelse(a1 <= random_i & b1 <= random_k,ifelse(a1 <= random_j & b1 <= random_l,"c"))) 

final_table = data.frame(train_data %>% group_by(cat) %>%
mutate(quant = quantile(c1,prob = .6)))

final_table$diff = ifelse(final_table$quant > final_table$c1,0)


final_table_m = data.frame(final_table %>% 
  group_by(cat) %>% 
  summarize(
   mean = mean(diff)
  ))

final_table_m = data.frame(final_table_m %>% add_row(cat = "total",mean = mean(final_table$diff)))

final_table_m$random_1 = random_i

final_table_m$random_2 = random_j


final_table_m$random_3 = random_k


final_table_m$random_4 = random_l

}
    }
        }
            }

但这只会保留“最新”的迭代。

有谁知道如何保存所有迭代,并将所有结果存储/保存在同一个表中?

谢谢

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)