使用for循环从R矩阵中提取索引以形成新矩阵

时间:2019-04-25 07:55:24

标签: r

我正在学习R,目前正在学习循环。 我的任务是创建一个函数ans(A),

1)将值为1和0的10x10矩阵A作为输入(例如“ true和false”)

2)取值为1的元素,并将其保存在新的2列矩阵中。第一列是行索引,第二列是列索引。然后,它返回这个新的索引矩阵。索引矩阵由matrix()组成。

该任务建议使用两个嵌套的for循环

我不太确定如何执行此任务,尤其是对于for循环。输入矩阵A可以例如通过简单的diag(10)在函数本身之前创建,然后用作函数的输入以进行测试。

该函数将使用for循环获取对角线索引,并将其插入新矩阵中,然后将其作为答案返回。

1 个答案:

答案 0 :(得分:0)

对于您描述的情况,不需要任何循环:

set.seed(42)
mat <- matrix(sample(0:1, 100, replace = T), ncol=10)
mat.ind <- which(mat==T, arr.ind=T)
> mat
      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
 [1,]    1    0    1    1    0    0    1    0    1     1
 [2,]    1    1    0    1    0    0    1    0    0     0
 [3,]    0    1    1    0    0    0    1    0    0     0
 [4,]    1    0    1    1    1    1    1    0    1     1
 [5,]    1    0    0    0    0    0    1    0    1     1
 [6,]    1    1    1    1    1    1    0    1    1     1
 [7,]    1    1    0    0    1    1    0    0    0     0
 [8,]    0    0    1    0    1    0    1    0    0     1
 [9,]    1    0    0    1    1    0    1    1    0     1
[10,]    1    1    1    1    1    1    0    0    0     1

> mat.ind
      row col
 [1,]   1   1
 [2,]   2   1
 [3,]   4   1
 [4,]   5   1
 [5,]   6   1
 [6,]   7   1
  ... ... ...