day5-數(shù)據(jù)結(jié)構(gòu)

思維導(dǎo)圖

day5-數(shù)據(jù)結(jié)構(gòu)

今日作業(yè)

getwd()
options(stringsAsFactors = T)
# 讀數(shù)據(jù)
a <- read.table(file='D:/Rwork1/huahua.txt', sep = '\t', header = T)
# 行名+列名
X<-read.csv('doudou.txt') # 變量區(qū)分大小寫
colnames(X) #查看列名
rownames(X) #查看行名,默認(rèn)值的行名就是行號,1.2.3.4...
colnames(X)[1]<-"bioplanet"
colnames(X) #查看列名
X<-read.csv(file = "huahua.txt",sep = " ",header =T,row.names=1)#最后row.names的意思是修改第一列為行名
# 導(dǎo)出
write.table(X,file = "yu.txt",sep = ",",quote=F)#分隔符改為逗號,字符串不加雙引號(默認(rèn)格式帶由雙引號) 
# 變量的保存與重新加載---
# 這次沒有處理完的數(shù)據(jù)下次想接著用怎么辦?--學(xué)會保存和重新加載。保存的格式是RData
?save.image
save.image(file="bioinfoplanet.RData")#保存當(dāng)前所有變量
load("D:/Rwork1/bioinfoplanet.RData")
save(X,file="test.RData")#保存其中一個變量
load("test.RData")#再次使用RData時的加載命令
# 提取元素
a[2,3]#第2行第3列
a[2,]#第2行
a[1:2]#第a列到第b列
a[c(3,5),]#第a列和第b列

a[,1]#第1列
a[1] #也是第1列
a$X1 #還是第1列
class(a[,1]) # 取到內(nèi)部
class(a[1])
class(a$X1) # 取到內(nèi)部
# 直接使用數(shù)據(jù)框中的變量
?paste0()
?runif()
b <-data.frame(case=paste0("S",1:9),values=runif(9))
values <- runif(9)
case <- paste0("S",1:9)
plot(a$case,a$values)
# 作業(yè)
save(X,file="test.RData")
?save()
# 會不會是環(huán)境中的變量是小寫x,為我這里想存儲的寫成了大寫的X
# 還有沒有其他可能呢?

復(fù)習(xí)之前學(xué)的

復(fù)習(xí)列表

#內(nèi)置數(shù)據(jù)集state.center就是一個列表,mtcars是一個數(shù)據(jù)框
state.center
a_b <- state.center

mtcars

iris
class(iris)



#創(chuàng)建一個列表
a <- 1:20
b <- matrix(1:20,4,5)
c <- mtcars
d <- 'this is a list test'
mlist <- list(a,b,c,d)
mlist



#為對象添加名稱
mlist <- list(first=a,second=b,third=c,forth=d)
mlist   #發(fā)現(xiàn),如,#[[4]] = $forth
                   #[[4]] = $third
                   #[[2]] = $second
                   #[[1]] = $first



#列表的訪問
##用索引值[]訪問
mlist[1]
mlist[1,4] #報錯
mlist[c(1,4)]
#從名稱訪問
state.center[x] #報錯
state.center['x']
state.center[c('x','y')]
mlist[c('first','third')]
mlist[c(1,3)]
#用$符號訪問
mlist$second
#用[[]]訪問
mlist[2]
mlist[[2]]
class(mlist[2])
class(mlist[[2]]) #列表是一量火車,[]只是取下一節(jié)火車,本質(zhì)還是火車
                  #[[]]是取下一節(jié)火車中的貨
mlist[1]
mlist[[1]]
class(mlist[1])
class(mlist[[1]])



#比較取值
mlist[2]   #因為一次訪問多個元素,這些元素的數(shù)據(jù)結(jié)構(gòu)又不同,那么輸出結(jié)構(gòu)只能是列表
mlist[[2]]
mlist['second']
mlist$second
mlist[['second']]

class(mlist[2])
class(mlist[[2]])
class(mlist['second'])
class(mlist$second)
class(mlist[['second']])
####### 對于列表而言,取值方法主要有3種:[數(shù)字]、[[數(shù)字]]、      $名字
                                    #   =[名字]、=[[名字]]、
                                    #  某節(jié)車廂、某節(jié)車廂的內(nèi)容、


#[[]]每次只能訪問一個元素  //  $也一樣 ???



#修改列表的值
mlist[5] <- iris #報錯,[]是一個列表,不能直接賦值
mlist[[5]] <- iris
#刪除列表中的元素
mlist <- mlist[-5]
mlist[[5]] <- NULL
mlist[5] <- NULL

復(fù)習(xí)數(shù)據(jù)框

##內(nèi)置數(shù)據(jù)集##
# 妖尾花數(shù)據(jù)集
iris
# 32輛汽車在11個指標(biāo)上的數(shù)據(jù)
mtcars
# 48塊石頭的數(shù)據(jù)
rock



##常見數(shù)據(jù)框##
?data.frame()
# 以state開頭的數(shù)據(jù),美國50個洲的相應(yīng)的數(shù)據(jù)
state.name #50個洲的名稱
state.abb #50個洲的簡稱
state.region #50個州的地理位置
attributes(state.abb)
attributes(state.region)
state.x77 # 50個洲的8個指標(biāo) 這是一個列表

#將以上數(shù)據(jù)集合成一個數(shù)據(jù)框
state <- data.frame(state.name,state.abb,state.region,state.x77) #50個洲,8+3個指標(biāo)
state



##數(shù)據(jù)框的訪問##
# 索引訪問
state[1]
state[c(2,4)]
state[-c(8,9,10,11)]
state[ ,"state.abb"] # 用行或列的名字可以直接去除相應(yīng)的行和列
state[,"state.abb"] # 很有意思:“[ ,"state.abb"] ” = “[,"state.abb"]”,有無空格都一樣
state$state.abb # $符號取值對畫圖很重要

# 對比一下,適用于列表的[[]],同樣適用于數(shù)據(jù)框,結(jié)果一樣,想火車的例子
state[1]
state[[1]]
class(state[1])
class(state[[1]])

# 畫圖試試
women #15位女性的身高體重數(shù)據(jù)
plot(women$height, women$weight) # 身高與體重散點圖
plot(women$weight, women$height)



# 盡量不適用attach函數(shù),$符號訪問代碼更清晰

作業(yè)

圖片.png

備注

在《R語言入門與實踐》中,作者說道“盡量不使用attach()函數(shù)”,用$這樣代碼更清晰

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容