4.7 类型转换

在上节中,我们讨论了将字符数据转换为日期值以及逆向转换的方法。R中提供了一系列用来判断某个对象的数据类型和将其转换为另一种数据类型的函数。

R与其他统计编程语言有着类似的数据类型转换方式。举例来说,向一个数值型向量中添加一个字符串会将此向量中的所有元素转换为字符型。你可以使用表4-5中列出的函数来判断数据的类型或者将其转换为指定类型。 表4-5 类型转换函数

判  断 转  换
is.numeric() as.numeric()
is.character() as.character()
is.vector() as.vector()
is.matrix() as.matrix()
is.data.frame() as.data.frame()
is.factor() as.factor()
is.logical() as.logical()

名为is.datatype()这样的函数返回TRUEFALSE,而as.datatype()这样的函数则将其参数转换为对应的类型。代码清单4-5提供了一个示例。

代码清单4-5 转换数据类型

  1. > a <- c(1,2,3)
  2. > a
  3. [1] 1 2 3
  4. > is.numeric(a)
  5. [1] TRUE
  6. > is.vector(a)
  7. [1] TRUE
  8. > a <- as.character(a)
  9. > a
  10. [1] "1" "2" "3"
  11. > is.numeric(a)
  12. [1] FALSE
  13. > is.vector(a)
  14. [1] TRUE
  15. > is.character(a)
  16. [1] TRUE

当和第5章中讨论的控制流(如if-then)结合使用时,is.datatype()这样的函数将成为一类强大的工具,即允许根据数据的具体类型以不同的方式处理数据。另外,某些R函数需要接受某个特定类型(字符型或数值型,矩阵或数据框)的数据,as.datatype()这类函数可以让你在分析之前先行将数据转换为要求的格式。