11--which.min(), which.max()和which()
which(x, arr.ind = FALSE, useNames = TRUE)
- x 是一個向量或者數組,可以是NA,但會省略掉,相當於FALSE。
- arr.ind = FALSE 當x是數組時,是否返回數組索引(arr.ind = array indices)
which(), which.max(), which.min()返回的是位置
> which(2:10 > 3)
[1] 3 4 5 6 7 8 9
> m <- matrix(1:12, 3, 4)
> div.3 <- m %% 3 == 0
> which(div.3)
[1] 3 6 9 12
> which(div.3, arr.ind = TRUE)
row col
[1,] 3 1
[2,] 3 2
[3,] 3 3
[4,] 3 4
> which.max(2:4)
[1] 3
12--意外降維(dimension reduction)
提取矩陣中的一行得到向量格式,使用drop參數則可以避免此情況。
> a <- matrix(1:12, ncol = 3)
> b <- a[,1]
> b
[1] 1 2 3 4
> class(b)
[1] "integer"
> c <- a[,1, drop = F]
> c
[,1]
[1,] 1
[2,] 2
[3,] 3
[4,] 4
> class(c)
[1] "matrix"
13--列表的遞歸
列表是可以遞歸的(recursive),即,列表的組件也可以是列表。
b <- list(u = 5, v = 12)
c <- list(w = 13)
a <- list(b, c)
a
[[1]]
[[1]]$u #此處的 [[1]] 即為b的名字,因為沒有給b賦予名字,默認為1
[1] 5
[[1]]$v
[1] 12
[[2]]
[[2]]$w #此處的 [[2]] 同上
[1] 13
14--列表的降維
- unlist 可以獲取列表的 值,返回一個向量。
- 拼接函數c()在拼接列表時默認得到的還是列表
- 有一個可選參數recursive,即是否把所有組件元素提取出來,組合成一個向量
- recursive 僅對列表有效。
> b <- list(u = 5, v = 12)
> unlist(b)
u v
5 12
> c(b)
$u
[1] 5
$v
[1] 12
> c(b,recursive = T)
u v
5 12
15--預先設定空向量
在編寫函數時往往需要預先設定一個指定的空向量,這時vector()可以指定它的長度以及類型。
> a <- vector(length = 3, mode = 'character')
> a
[1] "" "" ""
> vector(length = 3, mode = 'list')
[[1]]
NULL
[[2]]
NULL
[[3]]
NULL
