Subsetting data from List

由於List繼承至vector,在vector上的操作都可以套用至List上

  • [[ and $operator

    用來取得List內單一元素

    • [[ 取得該位置元素的文字內容,可帶入算式(expression)先求得索引值再取值,如果為文字則先求得該文字的索引再取值。
    • $ 只能利用字面常數取值。
    • $預設可以partial matching,[[則要明確指定exact=FALSE,partial matching指的是如果list一個元素名稱為abc,則輸入$a或[["a", exact = FALSE]]就找得到名稱內含有a的元素。
> x <- list(a = 1:5, b = "abc")
> x
$a
[1] 1 2 3 4 5

$b
[1] "abc"
###如果用[]取值會得到連同element name ($a)在內的資訊
> x[1]
$a
[1] 1 2 3 4 5
###用[[ operator取值只會出現該元素的底層文字敘述
#可用索引數字取值
> x[[1]] 
[1] 1 2 3 4 5
#也可用字面常數取值
> x[["a"]] 
[1] 1 2 3 4 5
#可以直接在裡面塞算式
> x[[2-1]] 
[1] 1 2 3 4 5
> i <- "a"
> j <- 3-2
#也可以對變數求值後再做為索引取值
> x[[i]] 
[1] 1 2 3 4 5
> x[[j]] 
[1] 1 2 3 4 5
### $ 只能直接以字面常數取值
> x$b
[1] "abc"
  • 對巢狀結構的List取值 因為[[只能取單值,所以如果帶入一個integer vector c(1, 2, 3),就是取得第1個元素的第2個元素的第3個元素的值,以此類推 很直觀,取得第x個元素的第x個元素的第x....:
    • List[[c(1stDimension, 2ndDimension...)]]
    • List[[1stDimension]][[2ndDimension]]...
> x <- list( a = 5:10, b = c(1.0, 2.0, 3.1))
> x[[c(2, 3)]]
[1] 3.1
> x[[2]][[3]]
[1] 3.1
  • 對List取很多值

    參照vector用[]operator裝載integer vector取特定值,用法一樣。

results matching ""

    No results matching ""