向量和列表

R 中的資料儲存在向量中。典型的向量是所有具有相同儲存模式的值序列(例如,字元向量,數字向量)。有關原子隱式類及其相應儲存模式的詳細資訊,請參閱 ?atomic"logical", "integer", "numeric" (synonym "double"), "complex", "character"raw。許多類只是一個原子向量,頂部有 class 屬性:

x <- 1826
class(x) <- "Date"
x 
# [1] "1975-01-01"
 x <- as.Date("1970-01-01")
 class(x)
#[1] "Date"
 is(x,"Date")
#[1] TRUE
 is(x,"integer")
#[1] FALSE
 is(x,"numeric")
#[1] FALSE
  mode(x)
#[1] "numeric"

列表是一種特殊型別的向量,其中每個元素可以是任何東西,甚至是另一個列表,因此列表的 R 術語:遞迴向量

mylist <- list( A = c(5,6,7,8), B = letters[1:10], CC = list( 5, "Z") )

列表有兩個非常重要的用途:

  • 由於函式只能返回單個值,因此通常會在列表中返回複雜的結果:

    f <- function(x) list(xplus = x + 10, xsq = x^2)
    
    f(7)
    # $xplus
    # [1] 17
    # 
    # $xsq
    # [1] 49
    
  • 列表也是資料框架的基礎類。在引擎蓋下,資料框是所有具有相同長度的向量列表:

    L <- list(x = 1:2, y = c("A","B"))
    DF <- data.frame(L)
    DF
    #   x y
    # 1 1 A
    # 2 2 B
    is.list(DF)
    # [1] TRUE
    

另一類遞迴向量是 R 表示式,它們是語言 - 物件