R語言的數(shù)據(jù)結(jié)構(gòu)
相較昨天難了一丟丟,還是需要多理解和消化轴术,學(xué)會(huì)動(dòng)手百度一下也很重要,以及代碼一定要理解不能純復(fù)制
第一步
區(qū)分標(biāo)量(一個(gè)元素組成的變量)和向量(多個(gè)元素組成的有序變量)
那么怎么給向量賦值呢光坝,大概有以下幾種方法??
x<- c(1,2,3)
這是常用的向量寫法,意為將x定義為由元素1取视,2,3組成的向量
x<- 1:10
x為從1-10之間所有的整數(shù)
x<- seq(1,10,by = 0.5)
x為1-10之間每隔0.5取一個(gè)數(shù)(注意是逗號(hào)不是分號(hào))
x<- rep(1:3,times=2)
x為1-3 常挚,重復(fù)2次
如果一直在給同一個(gè)變量賦值作谭。。奄毡。那結(jié)果以最后一次為哈
第二步
從向量中提取元素
可以分為兩種方法
1.根據(jù)元素位置(這里的x是剛剛賦值的那個(gè)變量)
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è)元素
2.根據(jù)值
x[x==10]
等于10的元素
x[x<0]
小于0的元素
x[x %in% c(1,2,5)]
存在于向量c(1折欠,2,5)中的元素
瘋狂劃重點(diǎn):鸸H袂亍!
x[c(1,2)]
和x[x %in% c(1,2)]
的意思真的不一樣5脸馈酱床!
舉個(gè)栗子??
x[c(1,2)]
指的是x中的第1、2個(gè)元素趟佃;而x[x %in% c(1,2)]
指的是x中所有值為1扇谣、2的元素!O姓选9拚!
第三步
數(shù)據(jù)框(有點(diǎn)頭大)
1.讀取本地?cái)?shù)據(jù)
還是舉個(gè)栗子
read.table(file="xx.txt",sep="\t",header=T)
就是提取了那個(gè)叫xx的txt序矩,sep="\t"
的話數(shù)據(jù)會(huì)是一列一列的 sep=","
的話數(shù)據(jù)會(huì)用逗號(hào)隔開鸯绿,嗷sep=" "
也可以,道理同上
header=T
的話第一行用于列名稱贮泞,具體數(shù)據(jù)從第二行開始 header=F
的話第一行即為具體數(shù)據(jù)
可以看出來header=F會(huì)比header=T多出一行
2.創(chuàng)建數(shù)據(jù)框
舉個(gè)栗子
xxnb <- data.frame(xx=c("clever","beautiful",6),zz=c("fat","white",7),mm=c("cute","handsome",8))
然后~當(dāng)當(dāng)當(dāng)當(dāng)
3.設(shè)置行名和列名
colnames(xxnb)
查看列名
rownames(xxnb)
查看行名
colnames(xxnb)[1]<-"xinxin"
把第一列名改為xx
rownames(xxnb)[1]<-"zz zhende taoyan"
把第一行名改為zz zhende taoyan
下面這個(gè)注意一下@愦取!
X<-read.csv(file = "xx.txt",sep = " ",header =T,row.names=1)
row.names=1
的意思是修改第一列為行名
4.數(shù)據(jù)框的導(dǎo)出
栗子??write.table(X,file = "yu.txt",sep = ",",quote=F)
quote=F意思字符串不加雙引號(hào)
5.變量的保存與重新加載
save.image(file="xx.RData")
保存當(dāng)前所有變量
save(xxnb,file="zz.RData")
保存其中一個(gè)變量
load("zz.RData")
再次使用RData時(shí)的加載命令
(后兩行進(jìn)行實(shí)驗(yàn)的時(shí)候記得要?jiǎng)h掉現(xiàn)在環(huán)境中的所有變量啃擦,否則就算只保存了一個(gè)囊蓝,load完還是所有變量都在哦
那么怎么刪掉所有變量呢,昨天有學(xué)的令蛉,但是我忘了
rm(list=ls())
rm(list=ls())
rm(list=ls())
重要的事情說三遍>鬯!珠叔!)
6.提取元素
xxnb[x,y]
第x行第y列
xxnb[x,]
第x行
xxnb[,y]
第y列
xxnb[y]
也是第y列
xxnb[a:b]
第a列到第b列
xxnb[c(a:b),]
第a行到第b行
xxnb[c(a,b)]
第a列和第b列
xxnb$列名
也可以提取列
7.直接使用數(shù)據(jù)框中的變量
不知道怎么解釋蝎宇。。祷安。直接上栗子
a <-data.frame(case=paste("S",1:50),values=runif(50))
plot(a$case,a$values)
這樣就是提取case和values兩列做散點(diǎn)圖
但是怎么樣避免要一直重復(fù)輸變量a呢
有兩種辦法
第一種:attach
attach(a)
plot(case,values)
將數(shù)據(jù)框名添加到搜索環(huán)境中:attach(a),作圖時(shí)就只需輸入列名(連$都不用了)
做完后將a刪除出搜索環(huán)境 detach(a)
局限性:兩個(gè)以上數(shù)據(jù)框的列名有沖突時(shí)姥芥,同時(shí)attach會(huì)報(bào)錯(cuò)
第二種:with
先解釋一下with(xxnb,xx)
就是調(diào)取xxnb里邊的xx
with(a,{
plot(case,values)
x<<-summary(values) #求和并賦值給x,<<的意思是作為全局變量,也就是出了大括號(hào)仍有效汇鞭。
})
x #運(yùn)行完后打印x
其實(shí)這個(gè)方法沒有很看懂凉唐。庸追。
第四步
保存腳本
隨便復(fù)制黏貼一個(gè)代碼
然后保存,下次可以直接打開
最后放上思維導(dǎo)圖梳理一下
最后的最后回答一下問題
save(X,file="test.RData")這句代碼如果報(bào)錯(cuò)X not found台囱,是為什么淡溯,應(yīng)該怎么解決?
因?yàn)闆]有這個(gè)變量簿训,檢查一下要保存的變量到底叫啥咱娶,注意大小寫什么的