我正在生成用零和一填充的随机矩阵。每次模拟的维度可能不同。
下面的示例矩阵
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] 0 0 0 0 0 0 0 1 0 0
[2,] 0 1 1 0 0 0 0 0 0 0
[3,] 0 0 0 0 1 0 0 0 0 1
[4,] 0 1 0 0 0 0 0 0 0 0
[5,] 0 0 0 0 1 0 0 0 0 1
[6,] 1 0 1 0 0 0 1 1 1 0
[7,] 0 0 0 0 0 0 1 1 0 0
[8,] 0 0 0 0 0 0 0 0 0 0
[9,] 0 0 1 0 0 1 0 0 1 1
[10,] 0 0 0 0 0 0 0 1 0 0
还有一点可视化
输出版本。
structure(c(0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0,
0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1,
0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0), .Dim = c(10L,
10L))
我想计算两件事:
我想我设法用这个函数解决了第一点
library(raster)
count_clusters <- function(grid) {
attr(clump(raster(grid), direc=4), 'data')@max
}
对于上面正确的矩阵,此函数将返回 14。
不幸的是,我不知道如何解决第二个任务。所需函数应返回以下输出:c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 5)
。
如果有任何提示或技巧,我将不胜感激。
最佳答案
计算每个集群中的数量:
grid <-structure(c(0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0,
0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1,
0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0), .Dim = c(10L,
10L)) + 10L))
x <- clump(raster(grid), direc=4)
从 RasterLayer @data@values 获取值。
vals <- x@data@values
使用以下值创建数据框:
dt <- tibble(cluster = vals)
删除NA值,按簇分组并计数
result <- dt %>%
filter(!is.na(cluster)) %>%
group_by(cluster) %>%
tally()
result$n
[1] 1 2 1 1 1 1 1 1 1 5 1 1 2 1
https://stackoverflow.com/questions/70868608/
相关文章:
visual-studio - 如何在 D 盘中完全安装 Visual Studio?
snowflake-cloud-data-platform - 如何设置开发人员以在雪花(和 dbt
javascript - 在 React.js 中使用 Dropzone 时如何将图像上传到 Fir
ios - FBSDKGraphRequest 实例方法 '-startWithCompletion
tensorflow - `model.predict(x,batch_size=n)` 是否使用多
sql - 窗口 SUM 函数如何在内部与 OVER 一起工作?
exception - 如何跳过在 Kafka 中产生运行时异常的记录并保持流运行?