variables的types和类

两个R问题:

  1. variablestypes(由typeof返回)和类(由class返回)之间有什么区别? 和C ++语言有什么不同?
  2. 什么是可能的variablestypes和类?

在R中,每个“对象”都有一个mode和一个class 。 前者表示一个对象如何存储在内存中(数字,字符,列表和函数),而后者表示其抽象types。 例如:

 d <- data.frame(V1=c(1,2)) class(d) # [1] "data.frame" mode(d) # [1] "list" typeof(d) # list 

正如你所看到的,数据框以listforms存储在内存中,但是它们被包装到data.frame对象中。 后者允许使用成员函数以及重载函数,如使用自定义行为进行print

typeofstorage.mode )通常会提供与mode相同的信息,但并不总是如此。 例如:

 typeof(c(1,2)) # [1] "double" mode(c(1,2)) # [1] "numeric" 

背后的推理可以在这里find:

R特定函数typeof返回R对象的types

函数模式提供Becker,Chambers&Wilks(1988)意义上的对象模式的信息,并且与S语言的其他实现更加兼容

我上面发布的链接还包含所有原生R basic types (向量,列表等)以及所有compound objects (因素和数据框架)的列表,以及mode ,types和class如何与每个types。

type实际上是指R中可用的不同数据结构。R语言定义手册中的这种讨论可能使您开始使用对象和types。

另一方面, class意味着R中的其他东西比你期望的要多。 从R语言定义手册(与您的R版本一起):

2.2.4类

R有一个精心制作的类系统1 ,主要通过class属性进行控制。 该属性是包含对象inheritance的类的列表的字符向量。 这构成了R中“通用方法”function的基础。

这个属性可以被用户无限制地访问和操作。 没有检查一个对象实际上是否包含类方法期望的组件。 因此,改变class属性应该谨慎,当它们可用时,特定的创build和强制function应该是优选的。