web-dev-qa-db-ja.com

MacでRからクリップボードに書き込む方法

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)

このコードはエラーメッセージを表示しませんが、クリップボードには何もコピーしません。助言がありますか?

26
Lina Bird

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」というファイルを検索します。あなたのデータの中に。

33
juba

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
7
agstudy

これは古い質問ですが、クリップボードに何かを入れる方法を探していたとき、それはまだトップヒットでした。

ここでの答えのどれよりもはるかに優れた解決策があります: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)
}
6
jzadra

クリップボードから直接Macにデータをインポートするためのこの素敵なコードを見つけましたMarcoGhislanzoniからの回答

秘訣はパイプファイルを使うことです。 Rのパイプファイルは、パイプ関数を介してアドレス指定できます。次に、Macクリップボードに対応するパイプファイルの固有名詞である「pbpaste」を知る必要があります。

これをすべてまとめると、read.tableコマンドの正しい構文が得られます。

Mac OSXclipboardRからのデータのインポート

data <- read.table(pipe("pbpaste"), sep="\t", header=T)
4
Samehmagd

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,...) 
}
3
hibernado

私はちょうど書いた いくつかの一般的な関数 WindowsとMacの両方で動作します。 Windowsバージョンで同じパラメーターを使用するために、入力および出力として文字ベクトルを使用しています。

1
dracodoc