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
推荐阅读
- python - Python Coinbase Pro API 类函数参数不起作用
- javascript - React Router 中的过滤器功能问题
- azure-functions - 将创建的 excel 文件保存到 azure blob 容器。路径问题
- css - CSS - 页面第一类元素的不同样式
- embedded - STM32 引导加载程序
- r - 如何通过R中的不同排列找到总频率?
- python - 删除最右边节点时的 DFS 递归问题
- django - 从 Django REST API 检索多个对象
- python - 我搞砸了 conda,命令在 Mac 上不起作用
- tensorflow - 无法调整代码以转换 Google 地球引擎的 Tensorflow 模型(EEification)