我有一个矩阵列表,对于列表中的每一个矩阵,我试图表示连续三次值〈100的情况,最终我需要的是,如果事件在序列沿着的任意一点连续发生三次,则每个矩阵都为1。或者0如果它没有。我提供的代码是更高的分辨率,但我可以减少它下来以后。下面是我迄今为止的代码。由于某种原因,它只在出现〈100而不是连续出现3次时才标记1。我认为lead函数不合适,但我现在卡住了。我确信seq_沿着forloop可以使用,但我试图保持它的功能。谢谢
set.seed(24)
list_of_matrices <- replicate(100, matrix(rnorm(1*51), nrow = 1), simplify = FALSE)
test<- lapply(list_of_matrices,function(x){ifelse(x & lead(x,1) & lead(x, 2) < 100, 1, NA)})
1条答案
按热度按时间s5a0g9ez1#
这里我们可以使用
rle
如果它是一个
list
的向量,我们可以通过循环list
直接应用rle
数据