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