交互方式检查变量: class
函数
脚本方式测试对象类型: is
函数
if(!is(x, "some_class"))
{
# 采取某些纠正措施
}
大部分的类都有自己的is.*
函数,直接调用它们会更加高效
assertive包中有更多的is函数
is.character("red lorry, yellow lorry")
## [1] TRUE
is.logical(FALSE)
## [1] TRUE
is.list(list(a=1, b=2))
## [1] TRUE
# 以下函数可以查看base包中所有的is函数
ls(pattern="^is", baseenv())
转型(casting) 改变一个对象的类型
大部分的is*
函数都有与之对应的as*
函数
y <- c(2, 12, 343, 34997)
as(y, "data.frame") # 这会报错
as.data.frame(y) # 这个可以正常运行
还有一个不推荐的用法:直接给对象分配一个新的类以改变其类型
x <- "123.456"
class(x) <- "numeric"
R能打印到小数点后第几位取决于R的设置,使用
option(digits=n)
来修改全局默认选项
R隐式调用了对象的print方法,所以当在控制台输入一个运算或变量的时候,结果会被打印出来
不过对于内循环或函数而言,自动打印功能不起作用,必须显式地调用print
大部分print函数的实现建立在调用底层的cat函数上
summary
函数 为不同数据类型提供汇总信息
类别向量和逻辑向量将根据每个值的计算进行汇总
多维对象、矩阵、数据框一样,都是通过列来汇总
num <- runif(30)
summary(num)
# Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.01587 0.27546 0.43051 0.41872 0.50256 0.96900
letters为内置常数 a-z
LETTERS A-Z
fac <- factor(sample(letters[1:5], 30, replace=TRUE))
summary(fac)
## a b c d e
## 5 7 5 6 7
bool <- sample(c(TRUE, FALSE, NA), 30, replace=TRUE)
summary(bool)
# Mode FALSE TRUE NA's
## logical 11 6 13
dfr <- data.frame(num, fac, bool)
head(dfr)
summary(dfr)
## num fac bool
## Min. :0.01587 a:5 Mode :logical
## 1st Qu.:0.27546 b:7 FALSE:11
## Median :0.43051 c:5 TRUE :6
## Mean :0.41872 d:6 NA's :13
## 3rd Qu.:0.50256 e:7
## Max. :0.96900
str
函数能显示对象的结构,对数据框和嵌套列表很有用
str(num)
## num [1:30] 0.662 0.485 0.542 0.416 0.447 ...
str(dfr)
## 'data.frame': 30 obs. of 3 variables:
## $ num : num 0.662 0.485 0.542 0.416 0.447 ...
## $ fac : Factor w/ 5 levels "a","b","c","d",..: 2 3 4 1 3 1 3 5 5 5 ...
## $ bool: logi NA NA TRUE NA FALSE FALSE ...
每个类都有自己的打印方法,以此控制如何显示到控制台,有时这种打印会模糊其内部结构
unclass
函数显示变量是如何构建的
unclass(fac)
## [1] 2 3 4 1 3 1 3 5 5 5 2 4 2 5 2 5 4 3 2 5 1 5 4 2 4 1 3 2 1 4
## attr(,"levels")
## [1] "a" "b" "c" "d" "e"
attribute
函数能显示当前对象的所有属性列表
attributes(fac)
## $levels
## [1] "a" "b" "c" "d" "e"
## $class
## [1] "factor"
View
函数会把变量(只读的)显示为电子表格
edit
函数和fix
函数允许手动更改数值
View(dfr) # 不允许更改
new_dfr <- edit(dfr) # 更改将保存于new_dfr
fix(dfr) # 更改将保存于dfr
结合View
函数和head
函数来查看数据框的前几行
View(head(dfr, 50)) # 查看前50行
ls
函数 列出现有变量的名称
默认下,以.开头的是隐藏文件
ls(pattern="ea")
## [1] "peach" "pear"
ls.str
函数查看变量的结构 在调试会话中很有用
browseEnv
在网页浏览器中以HTML页面的格式显示其输出
rm
函数 删除变量以清理区间
rm(peach, plum, pear)
rm(list=ls()) # 删除所有变量