R通过对象来运行,这些对象通过名字、内容和属性(数据类型)来刻画。所有的对象都有2个内在的属性:类型和长度。
1. 对象类型:类型是对象元素的基本种类,共有4种:
- 数值型(整型、单精度实型、双精度实型)
- 字符型
- 复数型
- 逻辑型(TRUE/FALSE/NA)
2. 对象长度:长度是对象中元素的数目。
对象的类型和长度可以分别通过函数mode()和length()得到。例如:
> x <- 1;y <-1i;z <- TRUE;q<-'woca';
> mode(x);mode(y);mode(z);mode(q);[1] "numeric"[1] "complex"[1] "logical"[1] "character"> length(x);length(y);length(z);length(q);[1] 1[1] 1[1] 1[1] 13. 特殊数值
R通过Inf表示正无穷的数值,-Inf表示负无穷的数值,NaN表示非数值。
> a=100**200
> a[1] Inf> b=-100**200> b[1] -Inf> c=0/0> c[1] NaN> mode(a)[1] "numeric"> mode(b)[1] "numeric"> mode(c)[1] "numeric"4. 特殊字符串
字符串放在单引号或双引号中。如果字符串里有单引号或双引号,可以使用“\”来转义。
> d="wo ca 'yct'"
> d[1] "wo ca 'yct'"> cat(d)wo ca 'yct'> e="wo ca 'yct' & \"tianyc\""> e[1] "wo ca 'yct' & \"tianyc\""> cat(e)wo ca 'yct' & "tianyc"5. 对象的查看与删除
5.1 前面我们定义了好多对象,可以通过 ls() 函数、objects() 函数,或 ls.str() 函数来查看一下:
> ls() #查看所有对象
[1] "a" "b" "c" "d" "e" "q" "x" "y" "z"> objects()[1] "a" "b" "c" "d" "e" "q" "x" "y" "z"可以进行模糊查看,再定义两个对象:
> aa='xjbu'
> cba='wocacaca'> ls(pat='a') #查看所有带有字符串‘a'的对象[1] "a" "aa" "cba"> ls(pat='^a') #查看所有以字符串‘a’开头的对象[1] "a" "aa"> ls.str() # 可以查看到更详细的信息
a : num Infaa : chr "xjbu"b : num -Infc : num NaNcba : chr "wocacaca"d : chr "wo ca 'yct'"e : chr "wo ca 'yct' & \"tianyc\""q : chr "woca"x : num 1y : cplx 0+1iz : logi TRUE> ls.str(pat='^a') #也可以使用pat参数a : num Infaa : chr "xjbu"5.2 可以通过 rm() 函数来删除已有的对象。
> ls()
[1] "a" "aa" "b" "c" "cba" "d" "e" "q" "x" "y" "z" > rm(a) #删除1个对象> ls() [1] "aa" "b" "c" "cba" "d" "e" "q" "x" "y" "z" > rm(b,c,d) #删除多个对象> ls()[1] "aa" "cba" "e" "q" "x" "y" "z" > rm(list=ls(pat='a')) #删除名称带有字符串‘a'的所有对象> ls()[1] "e" "q" "x" "y" "z"> rm(list=ls()) #删除所有对象> ls()character(0)6. 需要注意的地方
#6.1 R是区分大小写的,所以x和X是2个对象:
> x='wo'
> X='ca'> ls()[1] "x" "X"# 6.2 对象的命名不能与R的预设对象冲突,否则会提示错误:
> else='xjbU'
错误: 意外的'else'在"else"里R的预设对象列表如下:
break
else for function if TRUE in next repeat return while FALSE