矢量和列表
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 表达式,它们是语言 - 对象