R--列表

列表,組合多個(gè)不同類型的對(duì)象

#列表屬于遞歸型的向量
j <- list(name="joe",salary=55000,union=T)
#name,salary稱為標(biāo)簽,標(biāo)簽的名字可以簡(jiǎn)寫
j$sal
#列表也是向量所以可以通過(guò)vector()來(lái)創(chuàng)建列表
z <- vector(mode = "list")
#使用列表中的標(biāo)簽名來(lái)作為索引
z[["abc"]] <- 3```

#列表索引

三種方法,但是注意是雙重中括號(hào)

j[[2]]
j[["salary"]]
j$salary

單個(gè)中括號(hào)返回的是一個(gè)新的列表

j[1]

雙重中括號(hào)提取列表的一個(gè)組件,返回的是組件的本身類型```

增加,刪除列表元素

z$c <- "sailing"
#利用索引添加組件
z[[3]] <- 28
#添加序列就要使用單括號(hào)
z[4:5] <- c(T,F)

#刪除元素,將值設(shè)為NULL
z$abc <- NULL
#后面的元素索引會(huì)減1```

#合并多個(gè)列表

c(list("joe",55000,T),list(6))```

獲取列表長(zhǎng)度,是獲取到列表的組件個(gè)數(shù)

length(j)```

#一個(gè)統(tǒng)計(jì)單詞數(shù)的函數(shù)

findwords <- function(tf){

read in the words from the file,into a vector of mode character

txt <- scan(tf,what="")
wl <- list()

讀入每個(gè)單詞作為txt的一個(gè)向量元素

for(i in 1:length(txt)){
wrd <- tolower(txt[i])
wl[[wrd]] <- c(wl[[wrd]],i)
}
return(wl)
}```

訪問(wèn)列表組件標(biāo)簽的值

names(j)
#unlist()獲取列表的值
ulj <- unlist(j)
#unlist返回的是一個(gè)向量,向量類型根據(jù)第一個(gè)標(biāo)簽來(lái)確定
#比如name是numeric,則返回的向量就是numeric
#如果是混合類型,有numeric有character返回的就是character
#所以通常是字符串向量
w <- list(a=5,b="xyz")
wu <- unlist(w)
class(wu)
wu
#把元素名設(shè)為null
names(wu) <- NULL
wu
#或者去掉元素名
wun <- unname(wu)
wun```

#apply系列函數(shù)

lapply代表list apply對(duì)列表的每個(gè)組件執(zhí)行給定的函數(shù)

第二個(gè)參數(shù)是函數(shù)名,不需要加括號(hào)

返回的是一個(gè)使用函數(shù)處理過(guò)的列表

lapply(list(1:3,25:29),median)

sapply表示simplified apply,可以簡(jiǎn)化返回的值為向量或者矩陣

返回一個(gè)中位數(shù)的向量

sapply(list(1:3,25:29),median)```

文本詞匯索引

#sort wrdlst,the output of findwords() alphabetically by word
alphawl <- function(wrdlst){
  #將列表名稱獲得
  nms <- names(wrdlst)
  #對(duì)名稱排序,返回排序后的索引
  sn <- sort(nms)
  #返回排序后的列表,但是只有這樣索引才能有序
  #wrdlst結(jié)構(gòu)并沒(méi)有變化
  return(wrdlst[sn])
}

#orders the output of findwords() by word frequency
freqwl <- function(wrdlst){
  #使用sapply獲取到list的每一個(gè)組件的length
  freqs <- sapply(wrdlst,length)
  return(wrdlst[order(freqs)])
}
#order()函數(shù)
x <- c(12,5,13,8)
order(x)
#返回的是排完序后的索引,
#因此使用wrdlst[order(freqs)]就可以獲得排序的列表```

#一個(gè)實(shí)例

nyt <- findwords("nyt.txt")

進(jìn)行頻率排序,但是列表每個(gè)組件還是存儲(chǔ)著所在的單詞數(shù)

snyt <- freqwl(nyt)

總共有多少個(gè)單詞

nwords <- length(snyt)

對(duì)頻率在前10%的單詞,將其出現(xiàn)的次數(shù)提取出來(lái)

freqwls <- sapply(snyt[round(0.96*nwords):nwords],length)
win.graph(width=4.875, height=2.5,pointsize=8)
barplot(freqwls)```

單詞出現(xiàn)頻次統(tǒng)計(jì)圖

lapply()的一個(gè)用法

g <- c("M","F","F","M","I","M")
#which()函數(shù)give the true indices of a logical object,
#allowing for array indices 
lapply(c("M","F","I"),function(gender) which(g==gender))
#這里第一個(gè)參數(shù)是向量,lapply()會(huì)將向量強(qiáng)制轉(zhuǎn)換成列表的形式
#首先在"M"上調(diào)用匿名函數(shù),其次"F","I",which()函數(shù)返回索引向量
#向量g不在第一個(gè)參數(shù)而在which()里面```

#遞歸型列表

b <- list(u=5,v=12)
c <- list(w = 13)
a <- list(b,c)
a

即表示列表的組件也可以是列表

拼接函數(shù)c()有一個(gè)參數(shù)recursive表示將源列表壓平

c(b,c,a)
c(b,c,a,recursive=T)

recursive 遞歸

壓平后得到一個(gè)向量,只有名稱還帶有遞歸的特征,得到的是非遞歸的列表```

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,578評(píng)論 6 544
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,701評(píng)論 3 429
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 178,691評(píng)論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,974評(píng)論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,694評(píng)論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 56,026評(píng)論 1 329
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,015評(píng)論 3 450
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 43,193評(píng)論 0 290
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,719評(píng)論 1 336
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,442評(píng)論 3 360
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,668評(píng)論 1 374
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,151評(píng)論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,846評(píng)論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,255評(píng)論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,592評(píng)論 1 295
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 52,394評(píng)論 3 400
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,635評(píng)論 2 380

推薦閱讀更多精彩內(nèi)容

  • //Clojure入門教程: Clojure – Functional Programming for the J...
    葡萄喃喃囈語(yǔ)閱讀 3,730評(píng)論 0 7
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,771評(píng)論 25 708
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,836評(píng)論 18 139
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類相關(guān)的語(yǔ)法,內(nèi)部類的語(yǔ)法,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法,線程的語(yǔ)...
    子非魚_t_閱讀 31,737評(píng)論 18 399
  • 生命中總會(huì)有個(gè)人會(huì)成為你的靈感。 但愿,在遇見他之前,不要迷失自己。 等待,是一場(chǎng)不散的宴席 即使賓客散盡,也仍未...
    喵_小妖閱讀 196評(píng)論 0 1