某所で見かけた R コードを勝手に添削。
factor を作るときは gl 関数が便利です。(参照:Generate Factor Levels - R help)
添削前
temp <- factor(c(rep("refrige", 15), rep("normal_temp",15)))
bottle_name <- factor(rep(c(rep("evian", 5), rep("volvic",5) , rep("vittel",5)),2))
print(temp)
print(bottle_name)
結果
[1] refrige refrige refrige refrige refrige refrige
[7] refrige refrige refrige refrige refrige refrige
[13] refrige refrige refrige normal_temp normal_temp normal_temp
[19] normal_temp normal_temp normal_temp normal_temp normal_temp normal_temp
[25] normal_temp normal_temp normal_temp normal_temp normal_temp normal_temp
Levels: normal_temp refrige
[1] evian evian evian evian evian volvic volvic volvic volvic volvic vittel
[12] vittel vittel vittel vittel evian evian evian evian evian volvic volvic
[23] volvic volvic volvic vittel vittel vittel vittel vittel
Levels: evian vittel volvic
添削後
temp <- gl(2, 15, labels=c("refrige", "normal_temp"))
bottle_name <- gl(3, 5, 30, labels=c("evian", "volvic", "vittel"))
print(temp)
print(bottle_name)
結果
[1] refrige refrige refrige refrige refrige refrige
[7] refrige refrige refrige refrige refrige refrige
[13] refrige refrige refrige normal_temp normal_temp normal_temp
[19] normal_temp normal_temp normal_temp normal_temp normal_temp normal_temp
[25] normal_temp normal_temp normal_temp normal_temp normal_temp normal_temp
Levels: refrige normal_temp
[1] evian evian evian evian evian volvic volvic volvic volvic volvic vittel
[12] vittel vittel vittel vittel evian evian evian evian evian volvic volvic
[23] volvic volvic volvic vittel vittel vittel vittel vittel
Levels: evian volvic vittel
factor() で作ると、Levels が勝手にアルファベット順になっちゃうので、グラフ描いたりするときに思った通りの順番で表示されないので困ります。
その点、gl() は Levels が指定した順番どおりになるので最後までチョコたっぷり。
そんじゃーね。