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)