找回密码
 注册
查看: 18361|回复: 0

R语言中对象类型转换详细说明

[复制链接]
发表于 2011-1-22 18:18:23 | 显示全部楼层 |阅读模式
读者必然会发现一些类型的对象之间的差异是很小的;因此改变一个对
象的某些属性使它转换为另一种类型的对象是合乎逻辑的。as.something这
种形式的函数可以完成转换。R(2.1.0版)的base和utils包中有98个这种函数
在里面,所以我们在这里不做深入的阐述。
很明显转换取决于被转换对象的属性。一般来说,转换遵循一些很直观
的规则。对于类型的不同转换,下表总结了不同的情况。
转换目标函数规则
数值型as.numeric FALSE ! 0
TRUE ! 1
"1", "2", . . . ! 1, 2, . . .
"A", . . . ! NA
逻辑型as.logical 0 ! FALSE
其它数字! TRUE
"FALSE", "F" ! FALSE
"TRUE", "T" ! TRUE
其它字符! NA
字符型as.character 1, 2, . . . ! "1", "2", . . .
FALSE ! "FALSE"
TRUE ! "TRUE"
有许多函数可以用来转换对象的类型(as.matrix, as.ts, as.data.frame,
as.expression, . . . ),这些函数在转换时会影响除了类型之外的属性,将得
到的结果在一般情况下也是容易预见的。将因子转换为数值型是R中经常遇到
的情况,这种情况下R将因子的水平转化为数值编码:
> fac <- factor(c(1, 10))
> fac
[1] 1 10
Levels: 1 10
> as.numeric(fac)
[1] 1 2
这对于一个字符型因子来说是很有意义的:
> fac2 <- factor(c("Male", "Female"))
> fac2
[1] Male Female
Levels: Female Male
> as.numeric(fac2)
[1] 2 1
注意这个结果可能不像根据上面表格预期的那样是NA。
要想将一个数值型因子转换为一个数值型向量并且保持最初指定的水平
值,就必须先转换成字符型然后再转换成数值型。
> as.numeric(as.character(fac))
[1] 1 10
当一个文件中的数值型变量具有非数值的值时,这种做法就很有用;前
面我们已经看到了read.table()在缺省情况下会读取这列为一个因子。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|小黑屋|生物统计家园 网站价格

GMT+8, 2024-11-21 22:11 , Processed in 0.027322 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表