识别R对象的类和类型
王诗翔 · 2018-05-09
除了使用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()
求取平行最大、最小值。