1.
a<-c(1,2,3) ####创建对象
str(a) ####查看对象结构,结果显示: num [1:3] 1 2 3
ls() ####管理对象,浏览当前工作空间中包含的对象,比如上面会包含“a”对象
rm(a) ####删除当前工作空间中的指定对象
remove(b) ###和上面一样,即rm()
ls()
2.
数据类型
######################创建包含一个元素的向量
V1<-59 #创建整数形式的数值型向量,存储类型默认为双精度型
V2<-53.5 #创建实数形式的数值型向量,存储类型为双精度型
V3<-"abcD" #创建逻辑型向量,并直接显示对象值
(V4<-TRUE) #创建逻辑型向量,并直接显示对象值
is.vector(V1) #判断V1是否是向量
is.logical(V4) #判断V4是否是逻辑型向量
手动添加表
X<-c(1,1,1) #地区横坐标,通过常数创建数值型向量
Y<-c(2,2,2) #纵坐标
temp<-c(14.7,18.5,25.9) #温度
RH<-c(66,73,41) #相对湿度
wind<-c(2.7,8.5,NA) #风速,NA表示数值取缺失值
rain<-c(0,0,0) #降雨量
area<-rain #过火面积,rain的值赋给area
month<-c("aug","aug","aug") #月份,通过常数创建字符串向量
day<-rep("fri",each=3) #星期,通过rep函数创建向量,重复函数
rank<-seq(from=1,to=3,by=1) #通过seq函数创建向量,递增
访问指定元素
#########################访问指定位置上的元素
a<-vector(length=10) #创建包含10个元素的向量a,每个元素都是0
a[1]<-1 #访问第一个元素,赋值为1
a[2:4]<-c(2,3,4) #访问第2-4个元素,赋值为2,3,4
b<-seq(from=5,to=9,by=1) #生成一个取值为5-9的序列给向量b
a[c(5:9,10)]<-c(b,10) #访问第5-9以及第10个向量,并赋值为5-10
可以看到[ ]括号用来访问,()用来表示向量
合并矩阵
ForeData<-cbind(X,Y,temp,RH,wind,rain,area,rank) #利用列合并函数cbind创建矩阵
dim(ForeData) #显示矩阵的行列数
访问矩阵元素
#############访问矩阵中的元素
ForeData
ForeData[2,3]
ForeData[1:2,1:3]
fix(ForeData) #利用编辑窗口形式访问ForeDta
创建数据框
ForeDataFrm<-data.frame(FX=X,FY=Y,Fmonth=month,Fday=day,Ftemp=temp,FRH=RH,Fwind=wind,Frain=rain,Farea=area) #创建数据框
data.frame把矩阵转换成数据框
数组是一组类型相同的值
矩阵就是一个多维数组
数据框是一个特殊的对象,类似数据库里的表的概念
访问数据框
ForeDataFrm$Fwind #访问Fwind域
ForeDataFrm[["Ftemp"]] #访问Ftemp域
ForeDataFrm[[5]] #访问第5个域(Ftemp)
ForeDataFrm$Ftemp<-ForeDataFrm$Ftemp*1.8+32 #将摄氏温度转化为华氏温度
attach(ForeDataFrm) #attach数据框绑定函数,detach解绑函数,两者之间可简化域名书写
Ftemp #摄氏温度已经转化为华氏温度
Fwind
detach(ForeDataFrm)
Ftemp #不能在attach与detach之外省略数据框名
创建表
######################################创建列表
a<-c(1,2,3)
b<-matrix(nrow=5,ncol=2)
b[,1]=seq(from=1,to=10,by=2)
b[,2]=seq(from=10,to=1,by=-2)
c<-array(1:60,c(4,5,3))
d<-list(L1=a,L2=b,L3=c) #创建列表d,包含3个成分,分别是向量、矩阵和数组
访问表
######################################
names(d) #显示列表d的成分名
str(d) #显示d的存储类型和结构信息
is.list(d) #判断d是否为列表
d$L1 #访问列表d中的成分L1
d[["L2"]] #访问列表d中的成分L2
d[[2]] #访问列表d中的第2个成分(L2)
rm(a,b,c,d) #删除a,b,c,d
强制类型转换
a<-123.4
(a<-as.integer(a)) #将双精度型转化为整数型
(a<-as.character(a)) #将双精度型转化为字符串型
(a<-as.double(a)) #无法将将包含非阿拉伯数字的字符串转化为数值型
typeof(a) #显示a的存储类型
结构类型转换
> (a<-c(1:10))
[1] 1 2 3 4 5 6 7 8 9 10
> (b<-matrix(a,nrow=5,ncol=2,byrow=TRUE)) #由向量a派生矩阵b
[,1] [,2]
[1,] 1 2
[2,] 3 4
[3,] 5 6
[4,] 7 8
[5,] 9 10
> (a<-as.matrix(a)) #将向量a转化为矩阵a,默认列矩阵
[,1]
[1,] 1
[2,] 2
[3,] 3
[4,] 4
[5,] 5
[6,] 6
[7,] 7
[8,] 8
[9,] 9
[10,] 10
向量转化为因子
(a<-c("Poor","Improved","Excellent","Poor")) #创建字符串型向量a,包含4个元素
is.vector(a) #判断是向量
(b<-as.factor(a)) #利用as.factor将字符串型向量a转化为因子a,并显示a
is.factor(b)
levels(b) #顺序显示因子水平值对应的类别值
typeof(b) #显示因子的存储类型为整数型,但显示的是类别值,为字符串
levels用来表示排序的标准,按照因子进行排序
读取文本数据
#######################################读取txt
#形成向量
Forest<-scan(file="ForestData.txt",what=double(),skip=1) #无法成功执行,scan要求数据的存储类型一致,即txt里面的内容要么全是int,要么全是字符等
#形成数据框
Forest<-read.table(file="ForestData.txt",header=TRUE) #读取txt形成数据框,且第一行为标题
str(Forest)
names(Forest)
Forest<-read.table(file="ForestData.txt",header=TRUE,stringsAsFactors=FALSE) #是否自动转化字符串为因子
Forest<-read.table(file="ForestData.txt",header=TRUE,colClass=c("integer","integer","character","character","double","integer","double","double","double")) #指定各域的存储类型
########################################读取SPSS数据
library(foreign) #加载包foreign
Forest<-read.spss(file="ForestData.sav",use.value.labels = TRUE, to.data.frame = TRUE) #因子转化,数据读入数据框
str(Forest)
########################读取Excel数据
install.packages("xlsx") #下载并安装包
library("xlsx") #加载
Forest<-read.xlsx("ForestData.xlsx",1,header=TRUE,as.data.frame=TRUE)
str(Forest)
levels(Forest$month)
Forest$month<-factor(Forest$month,order=TRUE,levels=c("jan","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dec"))
levels(Forest$month)
#######################读取数据库数据
install.packages("RODBC") #下载安装RODBC包
library("RODBC") #加载
MyConn<-odbcConnectAccess2007("ForestData.accdb",uid="",pwd="") #建立ForestData.accdb的数据通道,通道名为MyConn
Forest<-sqlFetch(MyConn,"Table1") #通过通道读取Table1表数据到数据框中
close(MyConn) #关闭数据通道
str(Forest)
##########通过ODBC读取Excel数据
MyConn<-odbcConnectExcel2007("ForestData.xlsx")
Forest<-sqlFetch(MyConn,"Forest")
close(MyConn)
str(Forest)