Mac OSシステムでクリップボードに書き込むためにwrite.table関数を使用しようとしています。他のスレッドから、私は試しました
data <- rbind(c(1,1,2,3), c(1,1, 3, 4), c(1,4,6,7))
clip <- pipe("pbcopy", "w")
write.table(data, file="clip")
close(clip)
このコードはエラーメッセージを表示しませんが、クリップボードには何もコピーしません。助言がありますか?
OS Xでテストするマシンはありませんが、"clip"
の代わりにclip
だけを使用する必要があると思います。
data <- rbind(c(1,1,2,3), c(1,1, 3, 4), c(1,4,6,7))
clip <- pipe("pbcopy", "w")
write.table(data, file=clip)
close(clip)
ここでclip
はRオブジェクトです。
文字列「clip」をfile
引数に渡すと、Rはそれをファイル名と見なし、クリップボードでデータを検索する代わりに、Rセッションの作業ディレクトリに「clip」というファイルを検索します。あなたのデータの中に。
Kmisc
パッケージを使用できます。これには、クリップボードI/O(読み取り/書き込み)mult-iplatform用の2つの関数が含まれています。
data <- data.frame(x1 = c(1,1,2,3), x2= c(1,1, 3, 4), x3= c(1,4,6,7))
write.cb(data) ## wrapper to write.table in pipe("pbcopy") on MAC
dat <- read.cb(header=T) ## wrapper to read.table from pipe("pbpaste") on MAC
dat
x1 x2 x3
1 1 1 1
2 1 1 4
3 2 3 6
4 3 4 7
これは古い質問ですが、クリップボードに何かを入れる方法を探していたとき、それはまだトップヒットでした。
ここでの答えのどれよりもはるかに優れた解決策があります:clipr
パッケージ。
clipr::write_clip()
で十分です。 Windows、OS X、およびX11で動作します。
ヘルプファイルから: "write_clip()は、便利な方法でオブジェクトを書くことについて賢くしようとします。data.frameまたはmatrixが渡されると、外部のスプレッドシートプログラムに貼り付けるためにwrite.tableを使用してフォーマットします。オブジェクトを文字ベクトルに変換します。autoはオブジェクトタイプをチェックします。それ以外の場合は、テーブルまたは文字を明示的に指定できます。」
また、クリップボードに最後の結果を取得するための小さなヘルパー関数を作成しました。
wc <- function(x = .Last.value) {
clipr::write_clip(x)
}
クリップボードから直接Macにデータをインポートするためのこの素敵なコードを見つけましたMarcoGhislanzoniからの回答
秘訣はパイプファイルを使うことです。 Rのパイプファイルは、パイプ関数を介してアドレス指定できます。次に、Macクリップボードに対応するパイプファイルの固有名詞である「pbpaste」を知る必要があります。
これをすべてまとめると、read.tableコマンドの正しい構文が得られます。
Mac OSXclipboardRからのデータのインポート
data <- read.table(pipe("pbpaste"), sep="\t", header=T)
Mac OS Xでは、これを試してください。
copy_to_clipboard = function(x,sep="\t",col.names=T,...) {
write.table(x
,file = pipe("pbcopy")
,sep=sep
,col.names = col.names
,row.names = F
,quote = F,...)
}
この:
paste_from_clipboard = function(sep="\t",header=T,...) {
read.table(pipe("pbpaste")
,sep=sep
,header=header,...)
}
私はちょうど書いた いくつかの一般的な関数 WindowsとMacの両方で動作します。 Windowsバージョンで同じパラメーターを使用するために、入力および出力として文字ベクトルを使用しています。