根据区域中一部分连续值的数量替换列表中的值

时间:2018-10-23 12:53:56

标签: r

我有以下列表:

my_list <- list(c(1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1), c(0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0), c(0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1))
> my_list
[[1]]
 [1] 1 1 1 0 1 1 1 1 1 1 0 1 1

[[2]]
 [1] 0 0 0 0 1 1 0 1 1 1 1 1 0

[[3]]
 [1] 0 1 1 1 1 1 1 1 1 0 0 0 1

只要连续的1少于四个,我想用1替换那些0。结果列表应如下所示:

> my_new_list
[[1]]
 [1] 0 0 0 0 1 1 1 1 1 1 0 0 0

[[2]]
 [1] 0 0 0 0 0 0 0 1 1 1 1 1 0

[[3]]
 [1] 0 1 1 1 1 1 1 1 1 0 0 0 0

我相信我必须使用rleinverse.rle函数,但是我不知道该怎么做。感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

对于每个列表组件,请使用observeEvent(input$plot_click$x, { var <- input$plot_click$x output$click_x <- renderText({ var }) }) ,如果每个rle的{​​{1}}小于或等于values,则将其替换为0,默认为3。然后执行lengths的倒数以获取结果向量。

max_n

给予:

rle