如何解决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 举报,一经查实,本站将立刻删除。