Subsetting data from matrix

  • 取某值。
  • 取某行/欄,如果是取單值或單行(nx1)或單列(1xn),則預設是得到一個沒有維度屬性的vector,如果要保留維度資訊則要設定drop(如下)。
  • 取多行或多欄,預設就是保留維度資訊。

    > x <- matrix(1:9, 3, 3)
    > x
       [,1] [,2] [,3]
    [1,]    1    4    7
    [2,]    2    5    8
    [3,]    3    6    9
    #根據Indices取單一值
    > x[2, 2]
    [1] 5
    #取第二列
    > x[2, ]
    [1] 2 5 8
    #取第二行
    > x[, 2]
    [1] 4 5 6
    #可以傳入vector取得許多行/列,此時會有維度屬性!
    > x[c(1, 3), , drop = FALSE]
       [,1] [,2] [,3]
    [1,]    1    4    7
    [2,]    3    6    9
    
  • drop屬性 預設為TRUE,從matrix中取單值或單行/列時,得到的值為vector(不帶有維度屬性),若指定drop = FALSE則所取得的值為一維矩陣(1x1~1xn),如果是透過vector取多行或多列則不管怎樣都會保有維度屬性。

    > x <- matrix(1:9, 3, 3)
    > x
       [,1] [,2] [,3]
    [1,]    1    4    7
    [2,]    2    5    8
    [3,]    3    6    9
    > x[2, 2, drop = FALSE]
       [,1]
    [1,]    5
    > x[, 2, drop = FALSE]
       [,1]
    [1,]    4
    [2,]    5
    [3,]    6
    > x[2, , drop = FALSE]
       [,1] [,2] [,3]
    [1,]    2    5    8
    

results matching ""

    No results matching ""