English · PDF 334
使用 attr() 设置属性值,或使用 attributes() 一次性查看所有属性:
x <- 1:10 attr(x, "greeting") #> NULL attr(x, "greeting") <- "Hi!" attr(x, "farewell") <- "Bye!" attributes(x) #> $greeting #> [1] "Hi!" #> #> $farewell #> [1] "Bye!"
有三个非常重要的属性,它们被用来实现 R 的基础部分:
你之前已经见过名称了,而维度我们不会介绍,因为本书不使用矩阵。剩下要描述的是类,它控制泛型函数的工作方式。泛型函数是 R 中面向对象编程的关键,因为它们使函数针对不同类别的输入表现出不同的行为。关于面向对象编程的详细讨论超出了本书的范围,但你可以在 Advanced R 中阅读更多相关内容。
下面是一个典型的泛型函数的样子:
as.Date #> function (x, ...) #> UseMethod("as.Date") #> <bytecode: 0x7fa61e0590d8> #> <environment: namespace:base>
对 "UseMethod" 的调用意味着这是一个泛型函数,它会根据第一个参数的类调用特定的方法,即一个函数。(所有方法都是函数;但并非所有函数都是方法。)你可以使用 methods() 列出某个泛型的所有方法: