r - 计算 R 中非零值之间出现零的次数

我有一个矩阵

mat <- matrix(c(64,76,0,0,78,35,45,0,0,4,37,0,66,46,0,0,0,0,3,0,71,0,28,97,0,30,55,65,116,30,18,0,0,143,99,0,0,0,0,0), nrow=4, byrow=T)

mat
     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,]   64   76    0    0   78   35   45    0    0     4
[2,]   37    0   66   46    0    0    0    0    3     0
[3,]   71    0   28   97    0   30   55   65  116    30
[4,]   18    0    0  143   99    0    0    0    0     0

我想创建一个列表来计算非零值之间出现零的次数

[[1]]
[1] 2 2

[[2]]
[1] 1 4 1

[[3]]
[1] 1 1

[[4]]
[1] 2 5

最佳答案

你只需要rle

> apply(mat, 1, function(x) {
   rle(x)$length[rle(x)$values == 0]
 })
[[1]]
[1] 2 2

[[2]]
[1] 1 4 1

[[3]]
[1] 1 1

[[4]]
[1] 2 5

https://stackoverflow.com/questions/54913502/

相关文章:

kotlin - "lambda@"在 Kotlin 中是什么意思

r - 将位置索引添加到列表

angular - 以 Angular 删除项目后无法刷新表

office365 - 是否有 API 可以以编程方式制作 MS Office 365 Powerp

oop - 如何在子模块 Fortran 中使用类型

python - 如何更改 django admin css 样式和字体?

reactjs - React Hooks,如何实现useHideOnScroll hook?

python-3.x - 如何从 faust 应用程序向 Websocket 发送数据

java - 用于更新查询的 JPA @Query 注释(oracle sql 开发人员)——org

node.js - 为什么使用archiver.file模块压缩文件时出现 "queue close