Shixiang Wang

>上士闻道
勤而行之

识别R对象的类和类型

王诗翔 · 2018-05-09

分类: r  
标签: r   type   object   class  

除了使用is.*()函数,我们也可以使用class()typeof()函数来实现类型的识别。

接下来用例子展示class()typeof()作用在不同类型的对象上,它们输出信息的不同之处,我们用str()展示对象的结构。

对于数值向量:

x <- c(1, 2, 3)
class(x)
#> [1] "numeric"
typeof(x)
#> [1] "double"
str(x)
#>  num [1:3] 1 2 3

对于整数向量:

x <- 1:3
class(x)
#> [1] "integer"
typeof(x)
#> [1] "integer"
str(x)
#>  int [1:3] 1 2 3

对于字符向量:

x <- c("a", "b", "c")
class(x)
#> [1] "character"
typeof(x)
#> [1] "character"
str(x)
#>  chr [1:3] "a" "b" "c"

对于列表:

x <- list(a = c(1, 2), b = c(TRUE, FALSE))
class(x)
#> [1] "list"
typeof(x)
#> [1] "list"
str(x)
#> List of 2
#>  $ a: num [1:2] 1 2
#>  $ b: logi [1:2] TRUE FALSE

对于数据框:

x <- data.frame(a = c(1, 2), b = c(TRUE, FALSE))
class(x)
#> [1] "data.frame"
typeof(x)
#> [1] "list"
str(x)
#> 'data.frame':    2 obs. of  2 variables:
#>  $ a: num  1 2
#>  $ b: logi  TRUE FALSE

可以看到,typeof()返回对象的低级内部类型,class()返回对象的高级类。data.frame本质上就是具有等长成分的list


在进行向量化计算是不少函数都非常有用,比如&|ifelse()等。

在取最大最小值方面,对应于普通的max()min()函数,我们可以使用pmax()pmin()求取平行最大、最小值。