用行索引替换矩阵中的行值

标签 r matrix indexing row

我使用 r 矩阵(例如 [[0,0,0,1],[0,1,0,1],[1,0,0,0],[0,0 ,1,1]]) 代表 光栅。我想用它的行索引值替换除 0 之外的每个值。有没有类似的东西

matrix[matrix==1] <- row_index

所以我的结果看起来像 [[0,0,0,1],[0,2,0,2],[3,0,0,0],[0,0,4 ,4]]?

我在 Mac (10.7.5) 上使用 R 2.15.1 和 RPY2 2.2.6 来启动 R-Methods。 或者是否有任何其他方法可以为 histogramchi_square 等统计函数获得合理的结果?

最佳答案

对于一个简洁、富有表现力的解决方案,我可能会使用这个:

m <- matrix(c(0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1), 
            nrow = 4, byrow = TRUE)

m[m!=0] <- row(m)[m!=0]
m
#      [,1] [,2] [,3] [,4]
# [1,]    0    0    0    1
# [2,]    0    2    0    2
# [3,]    3    0    0    0
# [4,]    0    0    4    4

关于用行索引替换矩阵中的行值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15206912/

相关文章:

r - 使用 read.fortran 导入 .DAT 文件时出现错误

matlab - 如何在 MATLAB 中将两个掩码合并在一起?

python - 在 Python 中计算稀疏 Gram 矩阵的最快方法是什么?

java - Neo4j 索引未找到节点

sql-server - FluentMigrator 是否支持创建过滤索引?

java - TermQuery 没有给出预期结果作为 QueryParser - Lucene 7.4.0

r - 下载文件时出现权限被拒绝错误

r - sqldf:将时间戳从本地时间更改为 GMT/UTC

r - 是否有 R 包来解析地球物理 "Log Ascii Standard"文件(.las 文件)?

c++ - 将此 C++ 代码转换为 Matlab