变量是任何语言不可或缺的部分,R语言中的变量很灵活,可以储存为任何数据形式,也可以存放为任何R对象。
对变量进行赋值,其操作符可以是“<-”也可以是“=”,使用“<-”较多。例如把2赋值给变量x:
x<-2
x
## [1] 2
x=2
x
## [1] 2
也可以把一个值连续同时赋给多个变量
a<-b<-2
a
## [1] 2
b
## [1] 2
注意: 变量名可以是数字、字符、以及”.“和”-“等符号的组合,但是变量名称不能以数字或下划线开头。
变量删除可以用remove 或者其缩写 rm来完成
j<-4
j
## [1] 4
rm(j) ##等同于remove(j)
R语言中,变量的名称需区分大小写,例如:
theVariable<-7
theVariable ##不可写成THEVARIABLE
## [1] 7
R语言中最常用的4种主要数据类型是数值型(numeric)、字符型(character)、日期型(Date)或POSIXct(基于时间的)和逻辑型(logical)(TRUE或FALSE);数据类型可以用class查看。
x<-2
class(x)
## [1] "numeric"
数值型数据是R语言种最常用的数据类型,可以处理正数、负数、整数、小数和零。变量存储数值自动设为数值型。检验一个变量是否为数值型,用is.numeric。
x<-2
is.numeric(x)
## [1] TRUE
还有一种很重要但不常使用的数据类型是整数型(integer),指所有的整数,不包含小数。如果把一个整数赋值给变量,那么必须在该整数后加上“L”,可以通过is.integer来检验是否为整数型。
i<-5L
i
## [1] 5
is.integer(i)
## [1] TRUE
is.numeric(i) ##即使i是整数,其仍能通过数值型检验。
## [1] TRUE
当需要的时候,R语言会自动将整数型转化为数值型。例如,在整数乘以数值时,尤其是整数除以另一个整数时,得到的是一个整数。
class(5L)
## [1] "integer"
class(2.8L)
## [1] "numeric"
5L*2.8
## [1] 14
class(5L*2.8)
## [1] "numeric"
class(2L)
## [1] "integer"
5L/2L
## [1] 2.5
class(5L/2L)
## [1] "numeric"
R语言处理字符型数据有两种主要的方式:字符(character)和因子(factor),二者类似,但应区别对待。
x<-"data"
x
## [1] "data"
y<-factor("data")
y ##注意x包含的“data”有引号,而y包含的“data”无引号但包含y的水平值。
## [1] data
## Levels: data
字符是区分大小写的,所以“Data”不同于“data”和“DATA”。字符(或数值)的长度可以使用nchar。
x<-"data"
nchar(x)
## [1] 4
nchar(3)
## [1] 1
nchar(4562)
## [1] 4
nchar("hello")
## [1] 5
R语言中有很多不同的日期类型,最常见的时Date和POSIXct。Date仅储存日期,而POSIXct存储日期和时间。这两个对象实际上代表自1970年1月1日以来的天数(Date)或秒数(POSIXct)。
date1<-as.Date("2012-06-28")
date1
## [1] "2012-06-28"
class(date1)
## [1] "Date"
as.numeric(date1)
## [1] 15519
date2<-as.POSIXct("2012-06-28 17:42")
date2
## [1] "2012-06-28 17:42:00 CST"
class(date2)
## [1] "POSIXct" "POSIXt"
as.numeric(date2)
## [1] 1340876520
逻辑值是代表数据的一种方式,其可以为真(TRUE)也可以为假(FALSE)。从数值上来讲,真(TRUE)等同于1,假(FALSE)等同于0。所以,TRUE5等于5,而FALSE5等于0。
TRUE*5
## [1] 5
FALSE*5
## [1] 0
逻辑型数据类型的检验使用is.logical
k<-TRUE
class(k)
## [1] "logical"
is.logical(k)
## [1] TRUE
R语言中简写T和F分别代替TRUE和FALSE。但是在实际中最好不要用简写,因为它们只是储存TRUE和FALSE的简单变量,其可以被重新赋值,这将会导致很多麻烦和错误,例如:
TRUE
## [1] TRUE
T
## [1] TRUE
class(T)
## [1] "logical"
T<-7
T
## [1] 7
class(T)
## [1] "numeric"
逻辑值可以由数值或字符之间的比较所产生
2==3
## [1] FALSE
2!=3
## [1] TRUE
2<3
## [1] TRUE
2>3
## [1] FALSE
2<=3
## [1] TRUE
2>=3
## [1] FALSE
"data"=="stats"
## [1] FALSE
"data"<"stats"
## [1] TRUE