> a
[1] "AAA" "BBB" "CCC" "AAA"
> unique(a)
[1] "AAA" "BBB" "CCC"
linuxコマンドの、隣り合っている重複行をユニークにするuniqコマンドとよく混同して、uniqと書いてしまうのは私だけでしょうか。
$ cat file.txt
cat
cat
dog
mouse
$ uniq file.txt
cat
dog
mouse
linuxのuniqコマンドでは「-d」オプションで重複している値を取得することができます。
$ uniq -d file.txt
cat
これが頭にあった私は、Rのunique()でも同じようにオプションで指定するのだろうと思い込み、unique()のヘルプを舐めるように読みましたが、そんなオプションはありませんでした。
しかしRのヘルプは親切なので、一番最後の方で、「重複した値の取得にはduplicated()を使えるよ!」と教えてくれていました。助かります。
duplicated()は、真偽値を返します。要素が1つしかないときはFALSE、同じ要素が2回以上出現するとき、2回目以降の要素についてTRUEを返します。
> a
[1] "AAA" "BBB" "CCC" "AAA"
> duplicated(a)
[1] FALSE FALSE FALSE TRUE
> a[duplicated(a)]
[1] "AAA"