r - 使用 `which()` 获取匹配项的行和列索引

标签 r matrix indexing

假设我有一些矩阵,例如:

m = matrix(rep(c(0, 0, 1), 4), nrow = 4)
m
     [,1] [,2] [,3]
[1,]    0    0    1
[2,]    0    1    0
[3,]    1    0    0
[4,]    0    0    1
如果我运行 which ,我得到正常指数的列表:
> which(m == 1)
[1]  3  6  9 12
我想得到类似矩阵索引的东西 - 每个索引包含行号和列号:
     [,1] [,2]
[1,]    3    1
[2,]    2    2
[3,]    1    3
[4,]    4    3
有什么简单的功能可以做到这一点吗? 此外,它应该以某种方式包含行和列名称:
> rownames(m) = letters[1:4]
> colnames(m) = letters[5:7]
> m
  e f g
a 0 0 1
b 0 1 0
c 1 0 0
d 0 0 1
但我现在不知道了,也许喜欢
     [,1] [,2] [,3] [,4]
[1,]    3    1    c    e
[2,]    2    2    b    f
[3,]    1    3    a    g
[4,]    4    3    d    g
或者,可能返回 2 个向量(用于行和列),例如
c b a d
3 2 1 4

e f g g
1 2 3 3

最佳答案

对于您的第一个问题,您还需要通过 arr.ind= TRUEwhich :

> which(m == 1, arr.ind = TRUE)
     row col
[1,]   3   1
[2,]   2   2
[3,]   1   3
[4,]   4   3

关于r - 使用 `which()` 获取匹配项的行和列索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7507765/

相关文章:

r - 将数据框转换为 R 中具有适当标签的列表

c - 如何解决警告 'double *' 与 'double (*)[4][4]' 的间接级别不同

python - 计算 array1 第 i 行和 array2 第 i 列的乘积 - NumPy

C# Excel 互操作 : Exception from HRESULT (DISP_E_BADINDEX)

python - 如何在Python中从原始数据和列中查找索引?

r - 在 for 循环中绘制 R 中的数据帧

r - 结合两个不相等的数据集来计算比例

r - 如何在R中创建 "max"虚拟变量?

r - 将数组从 matlab 导入 R

c# - 为MySQL中的所有列创建索引