R语言中,mode和class有何区别

Python020

R语言中,mode和class有何区别,第1张

mode storage.mode typeof 是一类,检查变量类型,如list integer character等

关系是,从前往后,检查精度越来越细。所以当想看粗类别时,就用mode,看细类别用typeof.

# 此时后两者都能查到最细的程度

mode(1:5) # numeric

storage.mode(1:5) # integer

typeof(1:5) # integer

# 此时只有typeof能查到最细的程度

mode(`+`) # function

storage.mode(`+`) # function

typeof(`+`) # builtin

# 这里稍微解释一下,`+`是一个函数

# 下面两个例子等价

1+2 # 3

`+`(1,2) # 3

class和另外三个不是一个体系

对于有”class”属性的变量,返回的就是这个属性对应的值

对于没有”class”属性的变量,则根据它的类型、维度来确定

# 有"class"属性,只认属性

a <- 1:6

df <-data.frame(a,a+1)

class(df) # data.frame

class(df)<- "abc" # 随便定义一个值

class(df) # abc

#没有属性,根据类型和dim属性

ar <- array(1:4)

attributes(ar) # 数组dim为4

mat <- matrix(1:4)

attributes(mat) # 矩阵dim为4 1 两个值

a <- 1:4 # 没有dim

class(a) # integer

aar <- structure(a,dim=4) # 赋予类似array的dim

class(aar) # array

amat <- structure(a,dim=c(4,1)) # 赋予类似matrix的dim

class(amat) # matrix

class(list(1:4)) # list 不一样类型

1、mode()会输出一个R对象的基本数据类型(模式)

R可以处理的数据类型(types)(也叫模式(modes))包括数值型、字符型、布尔型、复数型(虚数)和原生型(字节)。

2、str()函数会输出一个R对象的结构

基本的数据结构(向量、矩阵、数组、数据框、因子、列表)

3、class()查看某对象的类型

class:是一种抽象类型,或者理解为一种数据结构(数据框,因子,列表)

他主要是用来给泛型函数(参考java中泛型的概念)识别参数用。

patientID <- c(1, 2, 3, 4)

age <- c(25, 34, 28, 52)

diabetes <- c("Type1","Type2","Type1","Type1")

status <- c("Poor","Improved","Excellent","Poor")

patientdata <- data.frame(patientID, age, diabetes,status)