←
PDF 335 / 520 Augmented Vectors
→
English · PDF 335
Original PDF page 335
中文 · PDF 335

methods("as.Date") #> [1] as.Date.character as.Date.date as.Date.dates #> [4] as.Date.default as.Date.factor as.Date.numeric #> [7] as.Date.POSIXct as.Date.POSIXlt #> 请参阅 '?methods' 以获取帮助和源代码

例如,如果 x 是字符向量,as.Date() 将调用 as.Date.character();如果它是因子,则会调用 as.Date.factor()。

你可以使用 getS3method() 查看某个方法的具体实现:

getS3method("as.Date", "default") #> function (x, ...) #> { #> if (inherits(x, "Date")) #> return(x) #> if (is.logical(x) && all(is.na(x))) #> return(structure(as.numeric(x), class = "Date")) #> stop( #> gettextf("do not know how to convert '%s' to class %s", #> deparse(substitute(x)), dQuote("Date")), domain = NA) #> } #> <bytecode: 0x7fa61dd47e78> #> <environment: namespace:base> getS3method("as.Date", "numeric") #> function (x, origin, ...) #> { #> if (missing(origin)) #> stop("'origin' must be supplied") #> as.Date(origin, ...) + x #> } #> <bytecode: 0x7fa61dd463b8> #> <environment: namespace:base>

最重要的 S3 泛型函数是 print():它控制当你在控制台输入对象名称时该对象如何被打印。其他重要的泛型函数包括子集选取函数 [, [[, 和 $。

增强向量

原子向量和列表是其他重要向量类型(如因子和日期)的构建基础。我将这些称为增强向量,因为它们是带有额外属性(包括类)的向量。由于增强向量具有类,它们的行为与其所基于的原子向量有所不同。在本书中,我们会用到四种重要的增强向量: