我正在尝试存储循环输出。但是,我的数据集很大,当我尝试查看它时,它会使Rstudio崩溃。我尝试了不同的技术,例如library(iterators)
和library(foreach)
中的函数,但是它没有按照我想要的去做。我试图从主表(表A)(行数54000)中获取一行,然后从另一个较小的表(表B)(行数= 6)中获取一行。我也看过Storing loop output in a dataframe in R,但实际上并不允许我查看结果。
代码从表A的第一行开始,然后对其进行6次遍历表B,然后输出每次迭代的结果,然后移至表A的第二行。因此,我的最终数据集应包含324000(54000 * 6)个观测值。
下面的代码为我提供了正确的观察结果(但我无法查看它是否正确地计算了值)以及表A和表B的摘要。
output_ratios <- NULL
for (yr in seq(yrs)) {
if (is.na(yr) == 'TRUE') {
numerator=0
numerator1=0
numerator2=0
denominator=0
} else {
numerator=Table.B[Table.B$PERIOD == paste("PY_", yr, sep=""), c("1")]
denominator=Table.B[Table.B$PERIOD == paste("PY_", yr, sep=""), c("2")]
denom=Table.A[, "1"] + (abs(Table.A[, "1"])*denominator)
num=Table.A[, "2"] + (abs(Table.A[, "2"])*numerator)
new.data$1=num
new.data$2=denom
NI=num / denom
NI_ratios$NI=c(NI)
output_ratios <<- (rbind(output_ratios, NI))
}
}
表B:
PERIOD 1 2 3 4 5
1 PY_1 0.21935312 -0.32989691 0.12587413 -0.28323699 -0.04605116
2 PY_2 0.21328526 0.42051282 -0.10559006 0.41330645 0.26585064
3 PY_3 -0.01338112 -0.03971119 -0.06641667 -0.08238231 -0.05323772
4 PY_4 0.11625091 0.01127819 0.07114166 0.08501516 0.55676498
5 PY_5 -0.01269256 -0.02379182 0.39115278 -0.03716100 0.63530682
6 PY_6 0.69041864 0.51034273 0.59290357 0.78571429 -0.48683736
表A:
1 2 3 4
1 25 3657 2258
2 23 361361 250
3 24 35 000
4 25 362 502
5 25 1039 502
非常感谢您的帮助。