今天學(xué)習(xí)內(nèi)容是R語言的數(shù)據(jù)結(jié)構(gòu),學(xué)習(xí)資料主要來源:微信公眾號生信星球
關(guān)于R語言代碼的編寫:
(1)R的賦值符號不是等號,而是<-
(2)在Console 控制臺輸入命令,相當于Linux的命令行
(3)R的代碼都是帶括號的,括號必須是英文的。
(4)顯示工作路徑 getwd()
(5)向量是由元素組成的,元素可以是數(shù)字或者字符串。
(6)表格在R語言中改名叫數(shù)據(jù)框
(7)可用這個命令查看幫助:?read.table,調(diào)出對應(yīng)的幫助文檔,翻到example部分研究一下。
(8)R代碼是嚴格區(qū)分大小寫的。
(9)R的數(shù)據(jù)類型有:向量(vector),矩陣(matrix),數(shù)組(array),數(shù)據(jù)框(data frame),列表(list)
一、向量
1. 標量和向量的區(qū)分
標量:一個元素組成的變量
向量:多個元素組成的變量,并且是一排有序排列的元素。
x<-1:5 #給x賦值1到5的整數(shù)
x<-seq(5,1,by=0.5) #5到1之間每隔0.5取一個數(shù)
x<-rep(1:3,times=c(1,2,3)) #對1,2,3重復(fù),1重復(fù)1次,2重復(fù)2次,3重復(fù)3次
注:給同一個變量多次賦值會覆蓋。
2. 從向量中提取元素
- 根據(jù)值
x[1:4] #第1到4個元素
x[-(1:4)] #除了第1-4個元素
x[c(1,5)] #第1個和第5個元素
- 根據(jù)位置
x[x==5] #等于5的元素
x[x<5] #提取值小于5的元素
x[x %in% c(1,2,5)] #取兩個向量的交集
二、數(shù)據(jù)框
1. 讀取本地數(shù)據(jù)
可用read.table()和read.csv()兩個函數(shù)。兩者的區(qū)別是:
驗證了一下:我們發(fā)現(xiàn)不管是逗號格式還是空格格式,都可以成為read.table()和read.csv()的數(shù)據(jù)源,那么區(qū)別就在于列數(shù)不對等這個需求了,對于read.table()嚴格要求所有列都對等,而read.csv()并不要求,后者會按最大列,或指定的列數(shù)填充,空串可指定相應(yīng)的字符或數(shù)字填充。
From:[R數(shù)據(jù)導(dǎo)入導(dǎo)出(一): read.table()和read.csv()的區(qū)別]
(https://www.cnblogs.com/ElfoDigger/p/10102120.html)
2. 設(shè)置行名和列名
colnames(X) #查看列名
rownames(X) #查看行名
colnames(X)[1]<-"col1" #修改某列名稱
read.csv(file = "....",sep = ",",row.names=1) #row.names=1指修改第一列為行名
3. 數(shù)據(jù)框的導(dǎo)出
write.table(x, file = "", append = FALSE, quote = TRUE, sep = " ",
eol = "\n", na = "NA", dec = ".", row.names = TRUE,
col.names = TRUE, qmethod = c("escape", "double"),
fileEncoding = "")
row.names:是否導(dǎo)出行序號,默認為TRUE,也就是導(dǎo)出行序號
col.names:是否導(dǎo)出列名,默認為TRUE,也就是導(dǎo)出列名
quote:字符串是否使用引號表示,默認為TRUE,也就是使用引號表示
4. 變量的保存與重新加載
save.image(file=" .RData") #保存當前所有變量
save(X,file="test.RData") #保存其中一個變量到某個RData文件
load(" .RData") #再次使用RData時的加載命令
5. 提取元素
X[x,y] #第x行第y列
X[x,] #第x行
X[,y] ,X[y] #第y列
X[a:b] #第a列到第b列
X[c(a,b)] #第a列和第b列
X$列名 #提取某列,只能提取一列
6. 直接使用數(shù)據(jù)框中的變量
用iris數(shù)據(jù)框的兩列做個散點圖,寫道腳本窗口,然后存到一個新的腳本里面:Q:save(X,file="test.RData")這句代碼如果報錯object X not found,是為什么,應(yīng)該怎么解決?
A:報錯說的是X變量找不到,對象找不到說明沒有被定義/賦值,通常是忘了定義或者賦值時代碼寫錯了。
在這個例子里,可能是用read.csv()或read.table()函數(shù)打開的txt文件的時候,只是寫了read.csv(file = "huahua.txt")而沒有把這個結(jié)果賦值給X。解決辦法是X<-read.csv(file = "huahua.txt")。