R語言的數(shù)據(jù)結(jié)構(gòu)
思維導(dǎo)圖

思維導(dǎo)圖
· 向量
1. 定義:向量是用于存儲(chǔ)數(shù)值型、字符型**或邏輯型數(shù)據(jù)的一堆數(shù)組。

向量示例.png
2. 從向量中提取元素
根據(jù)元素的位置
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)中的元素
%in%:%in% 判斷 前面的對象是否在后面的容器中
· 數(shù)據(jù)框
1. 定義:不同的列可以包含不同模式的數(shù)據(jù)(數(shù)值型、字符型),數(shù)據(jù)框可以通過data.frame()構(gòu)建。
2. 創(chuàng)建一個(gè)數(shù)據(jù)框

建立一個(gè)數(shù)據(jù)框.png
3. 設(shè)置行名和列名
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的意思是修改第一列為行名
參考生信星球公眾號(hào)
4.數(shù)據(jù)的保存
write.table()#文本文件保存
read.table() #文本文件讀取
save(X,file="test.RData") #存儲(chǔ)R對象為rda
load("test.RData")#加載
saveRDS(object = X, file = "test.rds") #存儲(chǔ)R對象為rds
iris2 <- readRDS(file = "test.rds") #加載
5. 提取元素
a[x,y]#第x行第y列
a[x,]#第x行
a[,y]#第y列
a[y]#也是第y列
a[a:b]#第a列到第b列
a[c(a,b)]#第a列和第b列
a$列名#也可以提取列(優(yōu)秀寫法,而且這個(gè)命令還優(yōu)秀到不用寫括號(hào)的地步,并且支持Tab自動(dòng)補(bǔ)全哦,不過只能提取一列)
參考生信星球公眾號(hào)
6. 直接使用數(shù)據(jù)框中的變量
函數(shù)attach(), detach(), with()
① attach():可將數(shù)據(jù)框添加到R的搜索路徑中,R在遇到一個(gè)變量名以后,將檢查搜索路徑中的數(shù)據(jù)框。
summary(mtcars$mpg)
plot(mtcars$mpg, mtcars$disp)
plot(mtcars$mpg, mtcars$wt)
每次都要加變量mtcars,感覺非常繁瑣,試試加入attach()
attach(mtcars)
summary(mpg)
plot(mpg, disp)
plot(mpg,wt)
detach(mtcars)
②detach():將數(shù)據(jù)框從搜索路徑中刪除
③with():當(dāng)名稱相同的對象不止一個(gè)時(shí)
with(mtcars, {
print(summary(mpg))
plot(mpg,disp)
plot(mpg,wt)
})
在這種情況下,{ }之間的語句都針對mtcars執(zhí)行,賦值僅在( )內(nèi)生效
如果在構(gòu)建with()結(jié)構(gòu)以外存在的全局變量時(shí),用特殊賦值符號(hào)<<-
Q: save(X,file="test.RData")這句代碼如果報(bào)錯(cuò)object X not found,是為什么,應(yīng)該怎么解決?
A: 首先在console中輸入X,可以肯定的是提示X不存在,考慮是否沒有將X這個(gè)變量加載到R環(huán)境中,其次也是最有可能的是X沒有區(qū)分大小寫,如果變量名為x(小寫)則X是不存在的一個(gè)變量。