昨天提到運用factor因子能進行文字的比對,在村莊中能快速統計出各種種族,甚至可以比較大小。
"但如果能將資料全部統和在一起,是不是更方便管理呢?"恩君疑惑的問道
"沒問題,這時我們就可以運用list列表,將所有的數值都儲存起來"
在vector裡面每一個元素都必須於相同型態,因此list可以把不同資料型態的值,放到同一個變數裡面
list和其他vector及matrix不同之處在於list內不會被強制轉成同一類no coercion
list內的各元素類型是可以為任意對象,換句話說不同的元素是可以存在list裡的就連三圍也可以管理
拿村長為例子,村長是哥布林,身上有302金是有錢人
解析村長 <- c("村長", "Goblin", 302, "RICH")
解析村長
[1] "村長" "Goblin" "302" "RICH"
利用str()我們可以看到R將自動將全部轉換成char字元,包含數字
str(解析村長)
chr [1:4] "村長" "Goblin" "302" "RICH"
接下來利用列表list()的方式將所有資料進行整合
list("村長", "Goblin", 302, "RICH")
[[1]]
[1] "村長"
[[2]]
[1] "Goblin"
[[3]]
[1] 302
[[4]]
[1] "RICH"
在用names()來命名,這次就都用中文吧!
names(解析村長) <- c("名字", "種族", "儲蓄", "富有度")
解析村長
$名字
[1] "村長"
$種族
[1] "Goblin"
$儲蓄
[1] 302
$富有度
[1] "RICH"
完成後,相較之前的結構,這邊就可以看出字元和數值同時被儲存起來
str(解析村長)
List of 4
$ 名字 : chr "村長"
$ 種族 : chr "Goblin"
$ 儲蓄 : num 302
$ 富有度: chr "RICH"
同樣的,複雜一點資料也可以做分析,我們先以村裡5個人來做樣本
根據他們的名字,種族,儲蓄金,和富有度來做設定。當作復習再來試試看吧!
名字有Billy, Bloodhoof, Scars, Dean, Sammy,當然中文字元也是可以的喔~
將數值存於na中
na <- c("Billy", "Bloodhoof", "Scars", "Dean", "Sammy")
種族依序是Orc, Hoblin, Goblin, Elf, Harpy
ra代表種族
ra <- c("Orc", "Hoblin", "Goblin", "Elf", "Harpy")
每個魔物身上的儲蓄
sa代表savings
sa <- c(120, 88, 50, 190, 166)
最後利用factor因子將各個人物身上的儲蓄金來歸類:100金以下是POOR, 100-150是OK, 150以上RICH
wealth <- factor(c("OK", "POOR", "POOR", "RICH", "RICH" ), ordered = TRUE, levels = c("POOR", "OK", "RICH"))
wealth
[1] OK POOR POOR RICH RICH
Levels: POOR < OK < RICH
所有資料都完成後,運用list將全部整合一起,順便換另外一種方式來設定名字
村莊 <- list(title = "村莊人口狀況", "名字" = na, "種族" = ra, "儲蓄" = sa, "富有度" = we )
讓我們來解析一下可愛的村莊吧
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
嘿嘿~那恩君要來製作新娘候選人不就可以輕而易舉的找出真命對象了?
明天利用[]中括號subseting來取出裡面的值~