行列の添え字操作

  • こちらから
  • ここから、こうたどって、行きつく「行列の扱い」ここにリンクを張っておいて、検索できるようにしておく
  • 行列の添え字を取り出す関数which()
    • こちらの記事
    • 条件を満足する要素の添え字を取り出す
    • ベクトル形式で取り出すか、行列形式で取り出すかは arr.ind=FALSE,arr.ind=TRUEで選ぶ
    • すべての要素が満足する条件を与えてやればよい
A<-matrix(1:12,3,4)
A
cbind(which(A<=max(A),arr.ind=TRUE),c(A))
> A<-matrix(1:12,3,4)
> A
     [,1] [,2] [,3] [,4]
[1,]    1    4    7   10
[2,]    2    5    8   11
[3,]    3    6    9   12
> cbind(which(A<=max(A),arr.ind=TRUE),c(A))
      row col   
 [1,]   1   1  1
 [2,]   2   1  2
 [3,]   3   1  3
 [4,]   1   2  4
 [5,]   2   2  5
 [6,]   3   2  6
 [7,]   1   3  7
 [8,]   2   3  8
 [9,]   3   3  9
[10,]   1   4 10
[11,]   2   4 11
[12,]   3   4 12
> 
  • 添え字はindexなので、Rに次のように検索をかけると
?? index
  • row(),col()という関数があることがわかる
row(A)
col(A)
cbind(c(row(A)),c(col(A)),c(A))
> row(A)
     [,1] [,2] [,3] [,4]
[1,]    1    1    1    1
[2,]    2    2    2    2
[3,]    3    3    3    3
> col(A)
     [,1] [,2] [,3] [,4]
[1,]    1    2    3    4
[2,]    1    2    3    4
[3,]    1    2    3    4
> cbind(c(row(A)),c(col(A)),c(A))
      [,1] [,2] [,3]
 [1,]    1    1    1
 [2,]    2    1    2
 [3,]    3    1    3
 [4,]    1    2    4
 [5,]    2    2    5
 [6,]    3    2    6
 [7,]    1    3    7
 [8,]    2    3    8
 [9,]    3    3    9
[10,]    1    4   10
[11,]    2    4   11
[12,]    3    4   12
  • cbind()も使わず、3つの値列をplot3d()に渡してもよい(こちらから)
plot3d(row(A),col(A),A)