> x<-1 #赋值
> x
[1] 1
> #上面[1]代表是x中第一个元素
> #数值型
> class(x) #查看x的类型
> #numeric表示存储的是数字
> x<-2L #赋值为整数
> class(x)
[1] "integer"
> #R对大小写敏感
> X<-1
> class(X)
[1] "numeric"
> #创建一个字符串类型:
> y<-"hello world"
> class(y)
[1] "character"
> #创建一个逻辑型的数据
> #注意大写真假
> t<-TRUE
> class(t)
[1] "logical"
> #创建一个复数值
> z<-1+2i
> class(z)
[1] "complex"
>
> #向量Vercter
x<-vector("character",length = 10)
#简单创建向量,向量里有1 2 3 4四个元素
x1<-1:4
#第三个创建变量的方法
x2<-c(1,2,3,4)
#R会强制把不同类型的向量元素转化为相同的,以下全部转为字符型
x3<-c(TRUE,10,"a")
#显式强制转换
x4<-c("a","b","c")
as.numeric(x4)
#> as.numeric(x4)
#[1] NA NA NA
#Warning message:
# NAs introduced by coercion
#as.logical()
#as.character()
class(x4)
#给向量添加名称
names(x1)=c("a","b","c","d")
#> x1
#a b c d
#1 2 3 4
#Matrix &Array
> x<-matrix(nrow = 3,ncol = 2)
> x
[,1] [,2]
[1,] NA NA
[2,] NA NA
[3,] NA NA
> x<-matrix(1:6,nrow = 3,ncol = 2)
> x
[,1] [,2]
[1,] 1 4
[2,] 2 5
[3,] 3 6
> #得到矩阵的纬度
> dim(x)
[1] 3 2
> #得到矩阵的属性
> attributes(x)
$dim
[1] 3 2
> #另外一种创建矩阵的方法
> y<-1:6
> y
[1] 1 2 3 4 5 6
> dim(y)<-c(2,3)
> y
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
>
> #矩阵的拼接
> y2<-matrix(1:6,nrow = 2,ncol = 3)
> #行拼接
> rbind(y,y2)
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
[3,] 1 3 5
[4,] 2 4 6
> #列拼接
> cbind(y,y2)
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] 1 3 5 1 3 5
[2,] 2 4 6 2 4 6
>
>
> #数组:数组的纬度可以大于二
> x<-array(1:24,dim=c(4,6))
> x
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] 1 5 9 13 17 21
[2,] 2 6 10 14 18 22
[3,] 3 7 11 15 19 23
[4,] 4 8 12 16 20 24
>
> #多维度
> x1<-array(1:24,dim=c(2,3,4))
> x1
, , 1
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
, , 2
[,1] [,2] [,3]
[1,] 7 9 11
[2,] 8 10 12
, , 3
[,1] [,2] [,3]
[1,] 13 15 17
[2,] 14 16 18
, , 4
[,1] [,2] [,3]
[1,] 19 21 23
[2,] 20 22 24
>
#列表
#列表可以包含不同类型的变量
> listx<-list("a",2,10L,3+4i,TRUE)
> listx
[[1]]
[1] "a"
[[2]]
[1] 2
[[3]]
[1] 10
[[4]]
[1] 3+4i
[[5]]
[1] TRUE
>
#注意列表中的=和<-不一样
> listy<-list(a<-2,b<-3,c<-4)
> listy
[[1]]
[1] 2
[[2]]
[1] 3
[[3]]
[1] 4
> listy<-list(a=2,b=3,c=4)
> listy
$a
[1] 2
$b
[1] 3
$c
[1] 4
> listz<-list(c(1,2,3),c(4,5,6))
> listz
[[1]]
[1] 1 2 3
[[2]]
[1] 4 5 6
>
#纬度命名
> x<-matrix(1:6,nrow = 2,ncol = 3)
> dimnames(x)<-list(c("a","b"),c("c","d","e"))
> x
c d e
a 1 3 5
b 2 4 6
>
#因子factor
#假如因子里面包含三个女性两个男性
> x<-factor(c("female","female","male","male","female"))
> x
[1] female female male male female
Levels: female male
>
#设定基线水平---很重要
#列子:levels(y) <- c("low", "high")
> y<-factor(c("female","female","male","male","female"))
> levels(y)<-c("male","female")
> y
[1] male male female female male
Levels: male female
>
> table(y)
y
male female
3 2
>
> unclass(y)
[1] 1 1 2 2 1
attr(,"levels")
[1] "male" "female"
>
> class(y)
[1] "factor"
>
#缺失值
#--NA/NaN属于NA,
> x<-c(1,NA,2,NA,3)
> is.na(x)
[1] FALSE TRUE FALSE TRUE FALSE
> is.nan(x)
[1] FALSE FALSE FALSE FALSE FALSE
> x<-c(1,NaN,2,NA,3)
> is.na(x)
[1] FALSE TRUE FALSE TRUE FALSE
> is.nan(x)
[1] FALSE TRUE FALSE FALSE FALSE
>
#数据框 date frame
#按列搞
> df<-data.frame(id=c(1,2,3,4),name=c("a","b","c","d"),gender=c(TRUE,TRUE,FALSE,FALSE))
> df
id name gender
1 1 a TRUE
2 2 b TRUE
3 3 c FALSE
4 4 d FALSE
> nrow(df)
[1] 4
> ncol(df)
[1] 3
>
> df2<-data.frame(id=c(1,2,3,4),score=c(80,86,90,100))
> df2
id score
1 1 80
2 2 86
3 3 90
4 4 100
> #转化为矩阵
> data.matrix(df2)
id score
[1,] 1 80
[2,] 2 86
[3,] 3 90
[4,] 4 100
>
#日期和时间(date,time)
#获取当前时间
> x<-date()
> x
[1] "Thu Feb 18 15:12:14 2016"
> class(x)
[1] "character"
> x2<-Sys.Date()
> x2
[1] "2016-02-18"
> class(x2)
#存储时间
> x3<-as.Date("2016-09-01")
> x3
[1] "2016-09-01"
> class(x3)
[1] "Date"
> weekdays(x3)
[1] "星期四"
> months(x3)
[1] "九月"
#季度
> quarters(x3)
[1] "Q3"
>
#求日期距离1970-01-01过了多少天
> julian(x3)
[1] 17045
attr(,"origin")
[1] "1970-01-01"
>
#时间的运算
> x4<-as.Date("2016-10-19")
> x4-x3
Time difference of 48 days
> as.numeric(x4-x3)
[1] 48
>
#时间:POSIXct/POSIXlt
#距离1970-01-01的秒数/Sys.time()
#POSIXct:整数,常用于存入数据框
#POSIXlt:列表,包括星期,年月日等信息
> x<-Sys.time()
> x
[1] "2016-02-18 15:26:13 CST"
> class(x)
[1] "POSIXct" "POSIXt"
> p<-as.POSIXlt(x)
> p
[1] "2016-02-18 15:26:13 CST"
> class(p)
[1] "POSIXlt" "POSIXt"
>
> names(unclass(p))
[1] "sec" "min" "hour" "mday" "mon"
[6] "year" "wday" "yday" "isdst" "zone"
[11] "gmtoff"
> p$sec
[1] 13.07167
> as.POSIXct(p)
[1] "2016-02-18 15:26:13 CST"
> #取出名字
> names(unclass)
NULL
> names(unclass(p))
[1] "sec" "min" "hour" "mday" "mon"
[6] "year" "wday" "yday" "isdst" "zone"
[11] "gmtoff"
> p$hour
[1] 15