两个R问题:
- 变量的类型(由返回
typeof
)和类(由返回)之间有什么区别class
?区别是否类似于C ++语言? - 变量的类型和类别是什么?
Answers:
在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"
背后的原因可以在这里找到:
R特定函数typeof返回R对象的类型
功能模式以Becker,Chambers和Wilks(1988)的意义提供有关对象模式的信息,并且与S语言的其他实现更兼容
我在上面发布的链接还包含所有本机R basic types
(向量,列表等)和所有compound objects
(因子和data.frames)的列表,以及有关如何与mode
,typeof
和class
每种类型相关的一些示例。
oldClass(matrix(1:10, 2,5)) # NULL