再回顧一下R的一些常識(shí):
(1)R的賦值符號(hào)不是等號(hào)片部,而是<-
(2)在Console 控制臺(tái)輸入命令,相當(dāng)于Linux的命令行
(3)R的代碼都是帶括號(hào)的,括號(hào)必須是英文的财骨。
(4)顯示工作路徑 getwd()
(5)向量是由元素組成的,元素可以是數(shù)字或者字符串藏姐。
(6)表格在R語言中改名叫數(shù)據(jù)框
(7)理解所學(xué)的命令隆箩、函數(shù)的意思。函數(shù)或者命令不會(huì)用時(shí)羔杨,除了百度/谷歌搜索以外捌臊,用這個(gè)命令查看幫助:?read.table,調(diào)出對(duì)應(yīng)的幫助文檔兜材,翻到example部分研究一下理澎。
今天學(xué)習(xí)主題:數(shù)據(jù)結(jié)構(gòu)
1.向量
-
標(biāo)量和向量
標(biāo)量:一個(gè)元素組成的變量
向量:多個(gè)元素組成的變量
元素:數(shù)字或者字符串(用chr表示)
x<- c(1,2,3)
:常用的向量寫法逞力,意為將x定義為由元素1,2糠爬,3組成的向量寇荧。
x<- 1:10
:從1-10之間所有的整數(shù)
x<- seq(1,10,by = 0.5)
:1-10之間每隔0.5取一個(gè)數(shù)(注意是逗號(hào)不是分號(hào))
x<- rep(1:3,times=2)
:1-3 重復(fù)2次
注:若依次給同一個(gè)變量賦值只會(huì)覆蓋上一次,以最后一次為結(jié)果执隧。
- .從向量中提取元素
根據(jù)元素位置
x[4]
#x第4個(gè)元素
x[-4]
#排除法揩抡,除了第4個(gè)元素之外剩余的元素
x[2:4]
#第2到4個(gè)元素
x[-(2:4)
]#除了第2-4個(gè)元素
x[c(1,5)]
#第1個(gè)和第5個(gè)元素
根據(jù)值
x[x==10]
#等于10的元素
x[x<0]
x[x %in% c(1,2,5)]
#存在于向量c(1,2殴玛,5)中的元素
2.數(shù)據(jù)框
新建txt文件--必須保存在工作目錄下M北臁(習(xí)慣性地每次新建一個(gè)Rproject,見day4的學(xué)習(xí)內(nèi)容)
- sep:字段分隔符滚粟。文件每一行上的值都用此字符分隔寻仗。 如果sep =“”(read.table的默認(rèn)設(shè)置),則分隔符為“空白”凡壤,即一個(gè)或多個(gè)空格署尤,制表符,換行符或回車符亚侠。
- header:一個(gè)邏輯值曹体。指示文件是否包含變量名稱作為其第一行。 如果丟失硝烂,則從文件格式確定該值:當(dāng)且僅當(dāng)?shù)谝恍邪淖侄紊儆诹袛?shù)時(shí)箕别,標(biāo)頭設(shè)置為TRUE(T)。
1)讀取本地?cái)?shù)據(jù)
read.table()
read.csv()
CSV (逗號(hào)分隔值文件格式)
R語言對(duì)于導(dǎo)入的格式要求非常嚴(yán)格滞谢,可以說是不靈活的串稀;簡(jiǎn)而言之就是更希望的是格式在外部編輯好再導(dǎo)入。不管是逗號(hào)格式(如doudou.txt)還是空格格式(如huahua.txt)狮杨,都可以成為read.table()和read.csv()的數(shù)據(jù)源母截,read.table()嚴(yán)格要求所有列都對(duì)等,而read.csv()并不要求橄教,后者會(huì)按最大列清寇,或指定的列數(shù)填充,空串可指定相應(yīng)的字符或數(shù)字填充护蝶。
例如:
但是還是不太懂該用哪個(gè)华烟。。持灰。盔夜。搜了篇帖R語言讀CSV、txt文件方式以及read.table read.csv 和re..._CSDN博客
2)設(shè)置行名和列名
X<-read.csv('doudou.txt')
:在示例數(shù)據(jù)里有doudou.txt ,注意這里的變量X是一個(gè)數(shù)據(jù)框
colnames(X)
:查看列名
rownames(X)
:查看行名,默認(rèn)值的行名就是行號(hào)衩藤,1.2.3.4...
colnames(X)[1]<-"bioplanet"
:有的公司返回?cái)?shù)據(jù)吧慢,左上角第一格為空,R會(huì)自動(dòng)補(bǔ)為x,用這個(gè)命令來修改
X<-read.csv(file = "huahua.txt",sep = " ",header =T,row.names=1)
:最后row.names的意思是修改第一列為行名
(其實(shí)我們這個(gè)數(shù)據(jù)框并不需要改赏表,如果你已經(jīng)改了检诗,知道怎么撤銷嗎?用剛才的read.table命令重新賦值一遍就可以覆蓋掉你剛才改瞎的了瓢剿。這也就是變量為什么叫"變"量)
3)數(shù)據(jù)框的導(dǎo)出
write.table(X,file = "yu.txt",sep = ",",quote=F)
:分隔符改為逗號(hào)逢慌,字符串不加雙引號(hào)(默認(rèn)格式帶由雙引號(hào))【導(dǎo)出名為yu.txt的文件自動(dòng)保存在工作目錄】
4)變量的保存與重新加載
這次沒有處理完的數(shù)據(jù)下次想接著用怎么辦?--學(xué)會(huì)保存和重新加載。保存的格式是RData间狂。
save.image(file="bioinfoplanet.RData")
:保存當(dāng)前所有變量
save(X,file="test.RData")
:保存其中一個(gè)變量
load("test.RData")
:再次使用RData時(shí)的加載命令
5)提取元素
X[x,y]
#第x行第y列
X[x,]
#第x行
X[,y]
#第y列
X[y]
#也是第y列
X[a:b]
#第a列到第b列
X[c(a,b)]
#第a列和第b列
X$列名
#也可以提取列(優(yōu)秀寫法攻泼,而且這個(gè)命令還優(yōu)秀到不用寫括號(hào)的地步,并且支持Tab自動(dòng)補(bǔ)全哦鉴象,不過只能提取一列)
6)直接使用數(shù)據(jù)框中的變量
提取某兩列作散點(diǎn)圖:
a <-data.frame(case=paste("S",1:50),values=runif(50))
plot(a$case,a$values
注:這里的case和values是兩個(gè)單純的列名忙菠;$
引用,表示提取變量結(jié)果(感覺就像excel里的函數(shù)都是引用目的)
回答一個(gè)問題:save(X,file="test.RData")這句代碼如果報(bào)錯(cuò)X not found纺弊,是為什么牛欢,應(yīng)該怎么解決?
答:X這個(gè)變量不存在淆游,可能是沒有賦值吧
總結(jié)
心得:今天的內(nèi)容操作倒是不難傍睹,但是要理解還是要花點(diǎn)功夫。每一個(gè)函數(shù)單獨(dú)搜倒是能知道怎么用犹菱,但是還有那么多符號(hào)拾稳,感覺有點(diǎn)頭大啊(學(xué)excel就沒把函數(shù)記住的腦子心累累)已亥。一點(diǎn)收獲熊赖,注意數(shù)據(jù)文件的保存格式和讀取格式還比較重要的来屠。