开始使用免费开始使用

创建一个 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 的方法。

  • 使用 ls.str()文档)查看您的工作区。
  • get_n_elements() 编写一个 S3 默认方法。
    • 函数名应为泛型名,随后是一个 .,再接 default
    • 输入参数应为 x...
    • 函数体应为单行,返回任意对象中的元素数量。请使用与练习 Make it Classy (1) 中国际象棋游戏相同的技巧。
  • ability.cov文档)数据集上调用您的方法,并将结果赋值给变量 n_elements_ability.cov

交互式实操练习

通过完成这段示例代码来试试这个练习。

# View predefined objects
___

# Create a default method for get_n_elements
___ <- ___




# Call the method on the ability.cov dataset
n_elements_ability.cov <- ___
编辑并运行代码