我怎么能计算矩阵中的数字

时间:2014-12-11 04:03:00

标签: r count numbers

我有一个带数字和NA的矩阵。 我希望像

一样显示这个矩阵
 N09
   V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11
1  0  7  0  0  0  9 NA NA NA  NA  NA
2  0  7  7  8  0  9 NA NA NA  NA  NA
3  0  8 11  7  7  9 NA NA NA  NA  NA
4  0  7  0  1  1  9 NA NA NA  NA  NA
5  0  3  3  3 11  9 NA NA NA  NA  NA
6  0  7  7  7  7  9 NA NA NA  NA  NA
7  0  4  0  0  0  9 NA NA NA  NA  NA
8  0  1  0  7  1  9 NA NA NA  NA  NA
9  0  1  0  0  0  9 NA NA NA  NA  NA
10  0  0  6  8  7  9 NA NA NA  NA  NA
11  0  0  1  1  0  9 NA NA NA  NA  NA

示例:

9 to : 1 1 3 1
10 to : 2 1 1 1 1

我该怎么办?

1 个答案:

答案 0 :(得分:1)

尝试

lst <- apply(N09, 1, function(x) unname(rle(x[!is.na(x)])$lengths))
lst[9:10]
#$`9`
#[1] 1 1 3 1

#$`10`
#[1] 2 1 1 1 1

如果您需要string格式

str1 <- paste(seq_along(lst), 'to :', unname(sapply(lst, paste, collapse=' ')))
str1[9:10]
#[1] "9 to : 1 1 3 1"    "10 to : 2 1 1 1 1"

数据

N09 <-   structure(c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 7L, 7L, 
8L, 7L, 3L, 7L, 4L, 1L, 1L, 0L, 0L, 0L, 7L, 11L, 0L, 3L, 7L, 
0L, 0L, 0L, 6L, 1L, 0L, 8L, 7L, 1L, 3L, 7L, 0L, 7L, 0L, 8L, 1L, 
0L, 0L, 7L, 1L, 11L, 7L, 0L, 1L, 0L, 7L, 0L, 9L, 9L, 9L, 9L, 
9L, 9L, 9L, 9L, 9L, 9L, 9L, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), .Dim = c(11L, 
11L), .Dimnames = list(c("1", "2", "3", "4", "5", "6", "7", "8", 
"9", "10", "11"), c("V1", "V2", "V3", "V4", "V5", "V6", "V7", 
"V8", "V9", "V10", "V11")))