R語言中的數(shù)據(jù)結(jié)構(gòu)
1.R的賦值符號不是等號奏纪,而是<- ("Alt" + "-" )缅糟;
2.R的代碼都是帶括號的,括號必須是英文的扎筒;
3.顯示工作路徑 getwd();
4.向量是由元素組成的酬姆,元素可以是數(shù)字或者字符串嗜桌;
5.表格在R語言中改名叫數(shù)據(jù)框;
6.函數(shù)或者命令不會用時辞色,除了百度/谷歌搜索以外骨宠,用這個命令查看幫助:?read.table,調(diào)出對應(yīng)的幫助文檔相满,翻到example部分研究层亿。
數(shù)據(jù)類型(重點(diǎn)只有兩個,剩下的不看)
- 向量(vector)??重要
- 矩陣(Matrix)
- 數(shù)組(Array)
- 數(shù)據(jù)框(Data frame)??重要
- List
1.向量
元素指的是數(shù)字或者字符串(用chr表示)等立美,根據(jù)它可以區(qū)分兩個詞:
- 標(biāo)量:一個元素組成的變量
- 向量:多個元素組成的變量
(P.S:一個向量是一排有序排列的元素匿又,以后會有把一個向量作為數(shù)據(jù)框中的一列的情況)
a .賦值
一般都會直接給變量定義,也就是“賦值”——賦予這個變量一個數(shù)值(還可以是字符串/數(shù)據(jù)框等等)
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取一個數(shù)(注意是逗號不是分號)
x<- rep(1:3,times=2) #1-3 重復(fù)2次
P.S:如果是給同一個對象賦值针贬,后執(zhí)行的命令會覆蓋前一個命令。
b.從向量中提取元素
(1)根據(jù)元素位置
x[4] #x第4個元素
x[-4] #排除法拢蛋,除了第4個元素之外剩余的元素
x[2:4] #第2到4個元素
x[-(2:4)] #除了第2-4個元素
x[c(1,5)] #第1個和第5個元素
(2)根據(jù)值
x[x==10]#等于10的元素桦他,有兩個“==”,一個“=”也是按位置提取元素了
x[x<0] #值為負(fù)數(shù)的元素
x[x %in% c(1,2,5)]#存在于向量c(1,2快压,5)中的元素
2.數(shù)據(jù)框
P.s:數(shù)據(jù)得放在相應(yīng)的工作目錄下
a.讀取本地數(shù)據(jù)
在工作目錄下創(chuàng)建一個文檔 "R.txt"(一定要放在工作目錄下圆仔,不然會報錯!)
read.table(file="R.txt",sep="\t",header=T)
a <- read.table(file="R.txt",sep="\t",header=T)
sep:通常蔫劣,打開文件看一下就可以確定文件所使用的字段分隔符坪郭,但對于空白分割的文件,可以選擇默認(rèn)的sep = "" (它能使用任何空白符作為分隔符脉幢,比如空格歪沃,制表符,換行符)嫌松, sep = " " 或者 sep = "\t" 沪曙。注意,分隔符的選擇會影響輸入的被引用的字符串萎羔。但如果你有含有空字段的制表符分割的文件液走,一定要使用 sep = "\t"。
header:將第一行當(dāng)作列名贾陷。用于指出文件的第一行是否為數(shù)據(jù)變量的名字缘眶,缺省情況下,由文件的格式來確定此值髓废。如果設(shè)置為TRUE巷懈,則要求第一行要比數(shù)據(jù)列的數(shù)量少一列。
row.names=1:將第一列當(dāng)作行名慌洪。
b.查看行名和列名
X<-read.csv('R.txt') #在示例數(shù)據(jù)里有R.txt 注意這里的變量X是一個數(shù)據(jù)框
colnames(X) #查看列名
rownames(X) #查看行名,默認(rèn)值的行名就是行號砸喻,1.2.3.4...
colnames(X)[1]<-"bioplanet" #有的公司返回數(shù)據(jù),左上角第一格為空蒋譬,R會自動補(bǔ)為x,用這個命令來修改
X<-read.csv(file = "huahua.txt",sep = " ",header =T,row.names=1) #最后row.names的意思是修改第一列為行名
read_csv和read_table的區(qū)別在于separator分隔符割岛。
csv是逗號分隔值(Comma-Separated Values),僅能正確讀入以 “,” 分割的數(shù)據(jù)犯助。
table的分隔符是tab
c.數(shù)據(jù)框的導(dǎo)出
write.table(X,file = "yu.txt",sep = ",",quote=F) #分隔符改為逗號癣漆,quote表示字符串不加雙引號(默認(rèn)格式帶有雙引號)
d.變量的保存與重新加載
這次沒有處理完的數(shù)據(jù)下次想接著用怎么辦?
--學(xué)會保存和重新加載。保存的格式是RData剂买。
save.image(file="bioinfoplanet.RData") #保存當(dāng)前所有變量
save(X,file="test.RData") #保存其中一個變量
load("test.RData") #再次使用RData時的加載命令
e.提取元素
- X[x,y] #第x行第y列惠爽,x和y為你想的具體行列數(shù)字
- X[x,] #第x行
- X[,y] #第y列
- X[y] #也是第y列
- X[a:b] #第a列到第b列
- X[c(a,b)] #第a列和第b列
- X$列名 #也可以提取列(這個命令優(yōu)秀到不用寫括號的地步,并且支持Tab自動補(bǔ)全瞬哼,不過只能提取一列)
X為之前賦值的一個數(shù)據(jù)框
而至于save(X,file="test.RData")
這句代碼如果報錯object X not found婚肆,是為什么,應(yīng)該怎么解決坐慰?
我個人覺得可能是沒有對 X 賦值或者沒有注意大小寫而導(dǎo)致的较性。