在R中,每个"对象"都有一个mode
和一个class
.前者表示对象在内存中的存储方式(数字、字符、列表和函数),而后者表示对象的抽象类型.例如:
d <- data.frame(V1=c(1,2))
class(d)
# [1] "data.frame"
mode(d)
# [1] "list"
typeof(d)
# list
正如您所见,数据帧以list
的形式存储在内存中,但它们被包装成data.frame
个对象.后者允许使用成员函数以及带有自定义行为的重载函数,如print
.
typeof
(storage.mode
)通常会给出与mode
相同的信息,但并不总是如此.举个例子:
typeof(c(1,2))
# [1] "double"
mode(c(1,2))
# [1] "numeric"
这背后的原因可以找到here:
R特定函数typeof返回R对象的类型
功能mode提供了有关贝克尔、钱伯斯和;Wilks(1988),并且与S语言的其他实现更兼容
我在上面发布的链接还包含所有原生R basic types
(向量、列表等)和所有compound objects
(factors和data.frames)的列表,以及mode
、typeof
和class
如何与每种类型相关的一些示例.