[R] Vector grouping challenge

jim holtman jholtman at gmail.com
Wed Oct 28 13:11:29 CET 2009


Is this what you want:

>  testVector <- c(12,32,NA,NA,56,NA,78,65,87,NA,NA,NA,90)
>  # get the breaks at the NAs
>  xb <- cumsum(!is.na(testVector))
>  split(seq(length(testVector)), xb)
$`1`
[1] 1

$`2`
[1] 2 3 4

$`3`
[1] 5 6

$`4`
[1] 7

$`5`
[1] 8

$`6`
[1]  9 10 11 12

$`7`
[1] 13


On Wed, Oct 28, 2009 at 7:57 AM, Johannes Graumann
<johannes_graumann at web.de> wrote:
> Dear all,
>
> Is there an efficient way to get this list
>> testList <- list(c(1),c(2,3,4),c(5,6),c(7),c(8),c(9,10,11,12),c(13))
>
> from this vector
>> testVector <- c(12,32,NA,NA,56,NA,78,65,87,NA,NA,NA,90)
> ?
>
> Basically the vector should be grouped, such that non-NA and all following
> NAs end up in one group.
>
> Thanks for any hint,
>
> Joh
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>



-- 
Jim Holtman
Cincinnati, OH
+1 513 646 9390

What is the problem that you are trying to solve?




More information about the R-help mailing list