开始使用免费开始使用

Primitive 泛型函数

R 的部分核心功能由 primitive(原生)函数实现。出于性能考虑,这类函数通过一种特殊方式直接访问 C 代码。典型示例包括语言元素(如 iffor)、运算符(如 +$),以及数学函数(如 expsin)。一些 primitive 函数同时也是 S3 泛型;可使用 .S3PrimitiveGenerics 查看所有 S3 primitive 泛型的完整列表(参见 docs)。

当 S3 泛型是 primitive 时,其方法查找流程会略有不同。R 仍会按常规使用 class(参见 docs)查找方法;但若未找到,对应的内部 C 代码函数会被调用。(这与常规泛型不同,后者在找不到方法时会抛出错误。)这意味着,即使您覆盖了对象的类,诸如计算长度等基础行为也不会被破坏。

本练习是课程的一部分

R 中的 S3 与 R6 面向对象编程

查看课程

练习说明

在您的工作区中已创建了一个列表对象,并将其类覆盖为 "hairstylist",变量名为 hair

  • 使用 str()(参见 docs)查看 hair 的结构。
  • 列出 R 已知的所有 S3 primitive 泛型。
  • 使用 exists()(参见 docs)函数检查名为 length.hairstylist 的函数不存在。注意该函数的输入是字符。
  • 计算变量 hairlength()(参见 docs)。

交互式实操练习

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

# View the structure of hair
___

# What primitive generics are available?
___

# Does length.hairstylist exist?
___

# What is the length of hair?
___
编辑并运行代码