【发布时间】:2017-08-30 19:12:26
【问题描述】:
我有一个向量x
x = c(1, 1, 2.00005, 1, 1, 0, 0, 0, 0, 1, 2, 0, 3, 4, 0, 0, 0, 0, 1, 2, 3, 1, 3)
我需要将由n 分隔的值(在这种情况下,假设n 是3)或多个零分成不同的组。
期望的输出是
list(x1 = c(1, 1, 2.00005, 1, 1),
x2 = c(1, 2, 0, 3, 4),
x3 = c(1, 2, 3, 1, 3))
#$x1
#[1] 1.00000 1.00000 2.00005 1.00000 1.00000
#$x2
#[1] 1 2 0 3 4
#$x3
#[1] 1 2 3 1 3
以下内容不起作用,因为它会拆分 x,即使组中的零少于 n。
temp = cumsum(x == 0)
split(x[x!=0], temp[x!=0])
#$`0`
#[1] 1.00000 1.00000 2.00005 1.00000 1.00000
#$`4`
#[1] 1 2
#$`5`
#[1] 3 4
#$`9`
#[1] 1 2 3 1 3
【问题讨论】:
-
lapply(strsplit(strsplit(gsub('(,0){3,},', ';', paste(x, collapse = ',')), ';')[[1L]], ','), as.numeric)
标签: r