昨天透過解析我們了解到了利用列表能管理多種不同屬性的數值,當然如同之前的vector向量,我們一樣能夠把所需要的資料用[]中括號擷取出來,或是列表的名稱。
再把村莊的狀態利用str()來解析看看吧
str(村莊)
List of 5
$ title : chr "村莊人口狀況"
$ 名字 : chr [1:5] "Billy" "Bloodhoof" "Scars" "Dean" ...
$ 種族 : chr [1:5] "Orc" "Hoblin" "Goblin" "Elf" ...
$ 儲蓄 : num [1:5] 120 88 50 190 166
$ 富有度: Ord.factor w/ 3 levels "POOR"<"OK"<"RICH": 2 1 1 3 3
假設我們想要找出村莊的資料,例如:村莊內種族的分布可以用多種方式來呈現,所得到的都將會是一樣的結果。
種族在第3個列表或是我們可以直接用種族來做查找,
村莊[3]
村莊["種族"]
$`種族`
[1] "Orc" "Hoblin" "Goblin" "Elf" "Harpy"
不同於上面的方式,下面的三種方式是僅需要list列表中的資料,因此使用兩個中括號,代表我們只需要此列表的內容。
另外,$這個符號也能代替中括號
村莊[[3]]
村莊[["種族"]]
村莊$種族
[1] "Orc" "Hoblin" "Goblin" "Elf" "Harpy"
"那如果只需要擷取列表內的部分資料呢?"
"我只想知道名字,種族及富有度" <- 拜金
"一樣我們可以利用c()來做"
村莊淺力股 <- 村莊[c(2, 3, 5)]
村莊淺力股
$`名字`
[1] "Billy" "Bloodhoof" "Scars" "Dean"
[5] "Sammy"
$種族
[1] "Orc" "Hoblin" "Goblin" "Elf" "Harpy"
$富有度
[1] OK POOR POOR RICH RICH
Levels: POOR < OK < RICH
這邊就可以看到我們將新的數值提取出來並存在村莊淺力股的部份,選擇需要的數值。
當然如果我們需要直接選取list中的某個特定的物件也是可以做得到
Sammy在哪裡呢?在第二列表名字的第五個
村莊$名字[5]
村莊[[2]][5]
[1] "Sammy"
同樣的我們也可以在列表了再加入新的數值,今年是魔物年2018年
淺力股都是高富帥
村莊淺力股 <- c(村莊淺力股, list(備註 = "高富帥", year = 2018, ))
村莊淺力股
$`名字`
[1] "Billy" "Bloodhoof" "Scars" "Dean"
[5] "Sammy"
$種族
[1] "Orc" "Hoblin" "Goblin" "Elf" "Harpy"
$富有度
[1] OK POOR POOR RICH RICH
Levels: POOR < OK < RICH
$備註
高富帥
$year
2018
如果我們是希望數值都是在同一個組,備註裡呢?
村莊淺力股A <- c(村莊淺力股, list(備註 = c("高富帥", 2018))
村莊淺力股A
$`名字`
[1] "Billy" "Bloodhoof" "Scars" "Dean"
[5] "Sammy"
$種族
[1] "Orc" "Hoblin" "Goblin" "Elf" "Harpy"
$富有度
[1] OK POOR POOR RICH RICH
Levels: POOR < OK < RICH
$備註
高富帥 2018
好了,這樣是不是更容易管理淺力股呢?