タイトルはそれをすべて示しています:データを別のアプリケーション(Excelなどのスプレッドシート、テキストエディターなど)で開いています。そのデータをオペレーティングシステムのクリップボードにコピーした場合、どのようにしてdata.frameとしてRに読み込むことができますか?
Windowsクリップボードにデータ(たとえば、Excelからコピーされたデータ)があり、そのデータをRのcopdat
という名前の変数に格納するとします。
copdat <- read.delim("clipboard")
rdat
という名前のR変数からWindowsクリップボードにデータをコピーする場合(たとえば、Excelにコピーする場合):
write.table(rdat, "clipboard", sep="\t", row.names=FALSE, col.names=FALSE)
「クリップボード」に使用される名前と正確な接続は、OSによって異なります。
windowsの場合:
_x <- read.delim("clipboard")
_
mac OSの場合:
_x <- read.delim(pipe(“pbpaste”))
_
Read.delimは、多くの関数と同様に、ファイルだけでなくさまざまな接続タイプを受け入れるため、機能します。 Macの場合、実際にはパイプを使用しています。 help(connections)
は非常に有益です。
Psychパッケージには関数read.clipboard()
があり、OSをテストすることでこれを少し簡単にします。
ここで他の人が述べたように、クリップボードに書き込むこともできます。通常、32 Kの制限があります。これは、たとえば、オブジェクトdfから最大256 K相当のデータを渡す場合のように、クリップボードの後にハイフンと数字を追加することで引き上げることができます。
_write.table(df, "clipboard-256")
_
スプレッドシートから表形式のデータを読みたい場合は、次のコードを使用しました
read.table(file = "clipboard", sep = "\t", header=TRUE)
datapasta
と呼ばれるRパッケージ/ RStudioプラグインがあり、これを非常にきれいに実行します- https://CRAN.R-project.org/package=datapasta を参照してください。以下の画像は、そのシンプルさのデモンストレーションです
data = as.numeric(read.table(text = "125 140 200 200 190 ", sep = " "))
と入力します。ここで、text = " "
引用符。
私がテストし、WindowsとMacOSの両方で動作する方法は、textConnection()
をread.table()
とともに使用することです。
最初に、データをテキストとして変数に貼り付けます。
density_water_str <- "T_/K Density_g/mL D2O
273 0.999841 1.10469
274 0.999900 NA
275 0.999941 NA
276 0.999965 NA
277 0.999973 1.1057
278 0.999965 1.10562
279 0.999941 NA
280 0.999902 NA
281 0.999849 NA
282 0.999781 NA
281 0.999700 NA"
次に、read.table()を使用してテキスト文字列を読み取ります
density_water <- read.table(textConnection(
object = density_water_str),
header = TRUE,
sep = "",
stringsAsFactors = FALSE)
Linuxや他のUnixシステムではテストされていませんが、クロスプラットフォームで動作するはずです。
?file
、セクションClipboard
のドキュメントをご覧ください。
クリップボードファイルは、description = "clipboard"とともにモード "r"でのみ使用できます。これは、X11プライマリ選択( http://standards.freedesktop.org/clipboards-spec/clipboards-latest.txt を参照)を読み取ります。これは、「X11_primary」として指定することも、セカンダリ選択として「X11_secondary」。ほとんどのシステムでは、クリップボードの選択(「編集」メニューの「コピー」で使用される)を「X11_clipboard」として指定できます。クリップボードを読み取り用に開くと、コンテンツは接続内の内部ストレージにすぐにコピーされます。 X11セレクションの1つに書き込みたいUnixユーザーは、xclip( http://sourceforge.net/projects/xclip/ )またはxsel( http:/ /www.vergenet.net/~conrad/software/xsel/ )。たとえば、プライマリ選択の場合はpipe( "xclip -i"、 "w")を使用します。 macOSユーザーは、pipe( "pbpaste")およびpipe( "pbcopy"、 "w")を使用して、システムのクリップボードの読み取りと書き込みを行うことができます。
たとえば、magrittrの場合:
base::file(description='clipboard') %>% readLines
Mojave 10.14を使用しています
コマンドの入力:X<-read.delim("clipboard")
Rstudioバージョン1.1.463 for Macで次の警告が発生しました。
Error in file(file, "rt") : cannot open the connection In addition: Warning message: In
file(file, "rt") : cannot open file 'pbpaste': No such file or directory
Googleで解決策を探して、これを実行するための無数の解決策、パッケージ、コマンドを試し、テストしました。そして、試行錯誤の日と夜で、ついに機能しました。
誰もこの問題に苦しむ必要はありません。したがって、私はこの情報を共有しています。
どの特定のインストールがマジックを実行したのか確信が持てないので、次のすべてに従ってください(ダウンロードはこの特定の順序である必要はありません)。
ダウンロードR-3.6.1.pkg
from https://cran.r-project.org/bin/macosx/
Rstudioを https://www.rstudio.com/products/rstudio/download/#download からダウンロードします
rcmdr
パッケージをRstudioにインストールします
[ツール]> [パッケージのインストール]に移動し、rcmdr
と入力します
https://www.xquartz.org/ からXQuartz 'X11'をダウンロードします
すべてのパッケージをダウンロードする
https://cran.r-project.org/bin/macosx/tools/ に移動し、次のツールをダウンロードします。
clang-8.0.0.pkg
(OS X 10.11以降、署名済み、64ビット)gfortran-4.2.3.pkg
(OS X 10.5+、署名済み、64ビットドライバー)tcltk-8.5.5-x11.pkg
(OS X 10.5+、署名済み)Rstudioに戻り、次のように入力します。
X<-read.delim("clipboard")
X
Excelでコピーされたデータは、Rstudioコンソールにインポートされます。
この情報がお役に立てば幸いです。
「datapasta」を使用して「wjchulme」の答えを補完するために、クリップボードの内容で変数を設定するためにRでdatapastaからの出力を設定/解釈する場合、次のようなことができます。
read.from.clipboard <- function() {
mydata<-eval(parse(text=paste(capture.output(datapasta::tribble_paste(output_context = datapasta::console_context()), file=NULL), collapse="")))
str(mydata); View(capture.output(str(mydata), file=NULL)) #Check guessed format is ok
return(mydata)
}
mydata<-read.from.clipboard() #Tibble format
mydata<-as.data.frame(read.from.clipboard()) #Data.frame format