创建一个 S3 方法(2)
如果泛型找不到合适的方法,就会抛出错误。例如,目前 get_n_elements() 只针对 data.frame 提供了方法。如果您把一个矩阵传给 get_n_elements(),就会看到错误。
> get_n_elements(matrix())
Error: no applicable method for 'get_n_elements' applied to an object of class "c('matrix', 'array', 'logical')"
与其为每一种输入都写一个方法,您可以创建一个用于处理没有特定方法的所有类型的方法。这称为默认方法;其名称总是 generic.default。例如,print.default()(文档)会打印任何没有自己 print()(文档)方法的对象类型。
本练习是课程的一部分
R 中的 S3 与 R6 面向对象编程
练习说明
工作区中已经定义了泛型函数 get_n_elements() 和针对 data.frame 的方法。
交互式实操练习
通过完成这段示例代码来试试这个练习。
# View predefined objects
___
# Create a default method for get_n_elements
___ <- ___
# Call the method on the ability.cov dataset
n_elements_ability.cov <- ___