variables的types和类
两个R问题:
- variablestypes(由
typeof
返回)和类(由class
返回)之间有什么区别? 和C ++语言有什么不同? - 什么是可能的variablestypes和类?
在R中,每个“对象”都有一个mode
和一个class
。 前者表示一个对象如何存储在内存中(数字,字符,列表和函数),而后者表示其抽象types。 例如:
d <- data.frame(V1=c(1,2)) class(d) # [1] "data.frame" mode(d) # [1] "list" typeof(d) # list
正如你所看到的,数据框以list
forms存储在内存中,但是它们被包装到data.frame
对象中。 后者允许使用成员函数以及重载函数,如使用自定义行为进行print
。
typeof
( storage.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应该是优选的。