我正在学习R,目前正在学习循环。 我的任务是创建一个函数ans(A),
1)将值为1和0的10x10矩阵A作为输入(例如“ true和false”)
2)取值为1的元素,并将其保存在新的2列矩阵中。第一列是行索引,第二列是列索引。然后,它返回这个新的索引矩阵。索引矩阵由matrix()组成。
该任务建议使用两个嵌套的for循环
我不太确定如何执行此任务,尤其是对于for循环。输入矩阵A可以例如通过简单的diag(10)在函数本身之前创建,然后用作函数的输入以进行测试。
该函数将使用for循环获取对角线索引,并将其插入新矩阵中,然后将其作为答案返回。
答案 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
... ... ...