新手記錄
1.表格在R語言中叫做數(shù)據(jù)框了
2.?read.table
就是查看和read
命令相關(guān)的幫助文檔,類推的話,赋秀?+任何命令都是查看對應(yīng)的幫助文檔
3.數(shù)據(jù)類型有向量(Vector)喳钟、矩陣(Matrix)、數(shù)組(Array)减细、數(shù)據(jù)框(Dataframe)匆瓜、列表(List)。加粗的是重點哦未蝌。
元素和向量
1.元素可以是數(shù)字或者字符串(與其他編程語言類似)驮吱,一個元素組成的就叫標量,多個元素組成的就叫向量萧吠。同時也因為向量是有序排列的一組元素(此處的有序不一定非得是數(shù)學(xué)上的邏輯順序左冬,只要排列了就相當于給了一個特定順序),所以可以把向量作為數(shù)據(jù)框的一列纸型。
2.變量賦值昨天有說拇砰,今天新了解的是數(shù)據(jù)框也可以賦值給變量!神奇狰腌。
PS:試一下View(x)
,x是變量名除破,會有新發(fā)現(xiàn)。其實在environment里面單擊也可以癌别,但是實測Value好像不行皂岔,Data可以。
3.在向量中提取元素有兩種方法展姐。
一種是按位置:
x[4] #取第四個元素
x[-4] #取除了第四個以外的元素
x[2:4] #取第2~4個元素
x[2:7] #取第2~7個元素(沒有了會報錯)
x[-(2:4)] #取除了第2~4個元素
x[c(1,5)] #取第一個和第五個元素躁垛,個人理解是這個語法只能取一次,所以要完成的話圾笨,括號里只能是一個向量教馆,重點在于“一個”
另一種是按值:
x[x==3]#等于3的元素,照葫蘆畫瓢擂达,兩個等號才是等于
x[x<0]#小于0的元素
x[x>1]#大于1的元素
x[x %in% c(1,2,5)]#存在于向量c(1,2,5)中的元素土铺,這個可以有也可以沒有,應(yīng)該都不會報錯【沒有的話好像會報integer(0)】理解的話同上。
數(shù)據(jù)框
1.讀取本地數(shù)據(jù)
先把示例數(shù)據(jù)放到工作目錄下悲敷,否則會報錯究恤。然后調(diào)用read命令。read有很多后綴后德,決定了讀取后的數(shù)據(jù)框格式部宿,這里只是舉一例。
read.table(file = "huahua.txt",sep = "\t",header=T)#讀取數(shù)據(jù)瓢湃,形成數(shù)據(jù)框
a<-read.table(file = "huahua.txt",sep = "\t",header=T)#把數(shù)據(jù)框賦值給變量a
sep指的是字段分隔符理张,每行的值都是由該字符分割的
header指的是數(shù)據(jù)第一行是否為數(shù)據(jù)框的第一行(T/F),默認的話基本就是F绵患,這時R會自動給你一個數(shù)據(jù)框的行標題(V1,V2等等)
2.設(shè)置行名列名
X<-read.csv("doudou.txt")#數(shù)據(jù)框賦值給X
colnames(X)#查看列名
rownames(X)#查看行名雾叭,默認值的行名就是行號,1.2.3.4...
colnames(X)[1]<-"bioplanet"#更改第一列列名為bioplanet
X<-read.csv(file="huahua.txt",sep = "",header = T,row.names = 1)#row.names的意思是把第一列當做行名
#這時候我們改的bioplanet就不見了落蝙,因為它是原來的第一列的列名织狐,而現(xiàn)在第一列的值都變成了行名,只剩了一列掘殴,即原來的第二列
3.數(shù)據(jù)框?qū)С?/p>
write.table(X,file = "yu.txt",sep = ",",quote = F)#把變量X中的數(shù)據(jù)框?qū)С鰹樾挛募荩麨閥u.txt,分隔符改為逗號奏寨,字符串不加雙引號(默認格式帶雙引號)
4.變量保存與重新加載
save.image(file = "bioinfoplanet.RData")#保存當前所有變量
save(X,file = "test.RData")#保存X變量
load("test.RData")#加載X變量起意,之前保存在這個文件中
RData是R語言的數(shù)據(jù)保存格式,退出RStudio之后病瞳,就可以在工作目錄中看到這幾個新變量啦揽咕。
5.提取元素
因為現(xiàn)在的變量X是數(shù)據(jù)框,所以取到的都是數(shù)據(jù)框里的數(shù)據(jù)
X[1,2]#第一行第二列
X[2,1]#第二行第一列
X[2,]#第二行全部
X[,]#全部數(shù)據(jù)
X[,2]#第二列全部
X[1:2]#第一列到第二列
X[c(1,3)]#第一列和第三列
X$X1#這里X1是列名套菜,并且支持自動補全亲善,但是只能提取一列
6.直接使用數(shù)據(jù)框中的變量(我就是個只會引用的憨憨)
提取某兩列作散點圖:
(需要提示一下,這里的case和values是兩個單純的列名逗柴,沒別的意思)
options(stringsAsFactors = T)
a <-data.frame(case=paste0("S",1:9),values=runif(9))
plot(a$case,a$values)
這種方法有個缺點:數(shù)據(jù)框名a在代碼中重復(fù)出現(xiàn)
那么如何懶惰地實現(xiàn):
將數(shù)據(jù)框名添加到搜索環(huán)境中:attach(a)
,作圖時就只需輸入列名(連$都不用了)蛹头。
attach(a)
plot(case,values)
detach(a)#做完后將a刪除出搜索環(huán)境
局限性:兩個以上數(shù)據(jù)框的列名有沖突時,同時attach會報錯戏溺。
方法二沒看懂就不弄了渣蜗。
今天就這樣啦~