名前付きベクトルの挙動
ひとりアドベントカレンダー2日目。
以下のコードの実行結果は皆さん予想できるだろうか。
x1 <- c(a=1, a=2, a=3, b=1, b=2, b=3) x2 <- c(a=1:3, b=4:6)
結果はこちら。
> x1 a a a b b b 1 2 3 1 2 3 > x2 a1 a2 a3 b1 b2 b3 1 2 3 4 5 6
今度はこちらのコードだとどうだろうか。
y <- rep(letters[1:3], c(2, 1, 3)) z <- c(a="hoge", b="hoge", c="hage") res <- z[y]
結果はこちら。
名前付きベクトルを使うことでmergeができる。
> res a a b c c c "hoge" "hoge" "hoge" "hage" "hage" "hage"
名前付きベクトルの挙動については、意外と皆さん知らないのではないだろうか。だいたいデータフレームしか触らないだろうし。
この辺の挙動はAdvanced Rに詳しい。
そして、へえ、邦訳が出るんだ。へえ。
- 作者: Hadley Wickham,石田基広,市川太祐,高柳慎一,福島真太朗
- 出版社/メーカー: 共立出版
- 発売日: 2016/02/10
- メディア: 単行本
- この商品を含むブログ (29件) を見る
なお、名前付きベクトルを使ったmergeの解説は以下の記事に詳しい。
Advanced Rより詳しい。
名前付きベクトルを使うとmergeの400倍速いらしい。
http://d.hatena.ne.jp/a_bicky/20140713/1405211663