我正在运行一个循环运行大约 100 万次的抛硬币模拟。
每次运行循环时,我都希望保留 RLE 命令的表输出。不幸的是,一个简单的附加似乎并不合适。每次我运行循环时,我得到的数据量都略有不同,这似乎是症结之一。
这段代码让我知道我在做什么:
N <- 5 #Number of times to run
rlex <-NULL
#begin loop#############################
for (i in 1:N) { #tells R to repeat N number
x <-sample(0:1, 100000, 1/2)
rlex <-append(rlex, rle(x))
}
table(rlex) #doesn't work
table(rle(x)) #only 1
因此,我想要一个合并的 rle 表,而不是有五个单独的 rle 结果(在这个模拟中,完整版有 100 万个)。希望这很清楚。显然我的实际代码要复杂一些,因此任何解决方案都应该尽可能接近我指定的内容。
更新:循环是绝对要求。没有如果或但是。也许我可以提取 table(rle(x)) 数据并将其放入矩阵中。然而,同样的绊脚石是一些不太频繁的运行长度并不总是在每个循环中出现。因此,我想我希望根据运行长度有条件地填充矩阵?
我放弃之前的最后一次更新:保留 rle$values 将意味着保留了太多数据。我的模拟是大规模的,我真的只希望保留 rle 的表输出。要么我为每个循环保留每个表(rle(x))并手动组合(会有数千个),要么我找到一种编程方式来保留数据(对于零和一来说是)并有一个由以下组成的表在我进行的过程中合并每个单独的循环。
按照规定,这很容易做到,或者我不会这样做。这似乎是一个愚蠢的想法/要求,但这应该与是否可以完成无关。
上次是认真的。这是一个动画 gif,显示了我期望发生的事情。
在循环数据的每次迭代之后,将数据添加到表中。这一点很清楚,我将能够传达它。