備忘用。わりかし実用的だが忘れがちな小ネタ。
Macだと若干やり方が違うので注意(という自分用備忘)
Motivation
Rでデータフレームをつくって、それをExcelにのせたいときがある。
また、Excelやブラウザ*1上でコピーしたtableをそのままdata frameとして使いたい時がある。
そんなとき、お手軽なのがクリップボードを使うことである。
参考記事
How to
Rのデータフレームをクリップボードへ
write.table(test_data,file="clipboard-16384",sep="\t",fileEncoding = "CP932")
やりかたは簡単。write.tableの引数fileに"clipboard"を指定するだけ。
ただし、自分は以前の記事で書いたようにデフォルトの文字コードをUTF-8にしているので例えばExcelに移す時に文字化けが発生しがち。
したがって、fileEncoding="CP932"を利用することで文字化けを回避している(参考URL)。
また、データフレームの容量によっては"clipboard buffer is full and output lost"というおぞましいErrorが出る(とくに文字を含んだときに顕著)。
これを回避するためには、引数fileに"clipboard"ではなく"clipboard-16384"と指定する(参考URL)。
16384は上限ってだけでそれ以下ならばよい。
クリップボードからRのデータフレームへ
まぁ対象はなんでもいいんだけど、ブラウザからのほうが便利さ&目新しさはあると思うので、
とりあえず藤井七段の対局結果のページから、「最近の対局結果」のテーブルをコピーした前提で話をすすめる。
コードは以下の通りだ。このWebページはUTF-8に設定されているようだがなぜかfileEncoding="CP932"じゃないとエラーを吐く。理由はわからない。
rdf <- read.table(file="clipboard-15000", header=T, sep="\t",fileEncoding = "CP932")
すると、綺麗に元のテーブルがdata.frame化されている。
Enjoy!!