京橋のバイオインフォマティシャンの日常

南国のビーチパラソルの下で、Rプログラムを打ってる日常を求めて、、Daily Life of Bioinformatician in Kyobashi of Osaka

【Rのジミ〜な小技シリーズ】エクセルデータをクリップボードにコピーして、Rのread.table関数でデータフレームとして読み込むTips

エクセルデータをクリップボードにコピーしてR環境に読み込む

今までほぼやってなかったけど、さっき使ってみて思いの外、便利でよかったです。 今後はこれを使いたいと強いメッセージを込めて、これのみでメモっておきます。

まずは、Macでエクセルを起動します。 文字や数字が書かれた、エクセルの任意のセルを選択して、command + c でコピーします。

Rを起動して、以下のコマンドを打てば*1クリップボードからデータのインポートができます

ただ、以下のコード実行前に、command + c をもう一度打たないこと。 コピーしたデータがクリップボードから消えます。癖で打ってしまいそうになりますけど。。。

コピーしたセルがヘッダーを含む場合

Data <- read.table(pipe("pbpaste"), header=T, stringsAsFactors = F)
Data

# OR

Data <- read.table(pipe("pbpaste"), sep="\t", header=T, stringsAsFactors = F)
Data

コピーしたセルがヘッダーを含まない場合

Data <- read.table(pipe("pbpaste"), header=F, stringsAsFactors = F)
Data

# OR

Data <- read.table(pipe("pbpaste"), sep="\t", header=F, stringsAsFactors = F)
Data

追記(2020年6月10日): マークダウンなどでテーブル出力

実際に、クリップボードからR上にインポートして、 データフレームをBlog用のマークダウンなどでテーブル出力するのをやってみました。

エクセルで、以下の画像のようにセルをcommand + c でコピーしてみます。

エクセルを閉じずに、そのまま、以下のRコードを実行します。

if(!require("knitr")){install.packages("knitr")}; library(knitr)

Data <- read.table(pipe("pbpaste"), header=T, stringsAsFactors = F)

Data
#  A B  C  D
#1 1 2  3  4
#2 1 3  5  7
#3 2 5  8 11
#4 3 6  9 12
#5 4 7 10 13

#マークダウン出力
kable(Data, format = "markdown")

#|  A|  B|  C|  D|
#|--:|--:|--:|--:|
#|  1|  2|  3|  4|
#|  1|  3|  5|  7|
#|  2|  5|  8| 11|
#|  3|  6|  9| 12|
#|  4|  7| 10| 13|

#Latex出力
kable(Data, format = "latex")

#\begin{tabular}{r|r|r|r}
#\hline
#A & B & C & D\\
#\hline
#1 & 2 & 3 & 4\\
#\hline
#1 & 3 & 5 & 7\\
#\hline
#2 & 5 & 8 & 11\\
#\hline
#3 & 6 & 9 & 12\\
#\hline
#4 & 7 & 10 & 13\\
#\hline
#\end{tabular}

#Pandoc出力
kable(Data, format = "pandoc")

#  A    B    C    D
#---  ---  ---  ---
#  1    2    3    4
#  1    3    5    7
#  2    5    8   11
#  3    6    9   12
#  4    7   10   13

【Rのジミ〜な小技シリーズ】

skume.net

skume.net

skume.net

skume.net

skume.net

skume.net

skume.net

skume.net

skume.net

参考資料

http://marcoghislanzoni.com/blog/2013/10/27/import-data-r-mac-os-x-clipboard/marcoghislanzoni.com

riseki.php.xdomain.jp

*1:R4.0以降は大丈夫だが、 stringsAsFactors = F は念のためいれておくこと