30

write.table関数を使用して、macosシステムのクリップボードに書き込もうとしています。他のスレッドから、私は試しました

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)

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

4

6 に答える 6

37

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」というファイルがあり、その中にデータが含まれています。

于 2013-01-27T12:00:58.957 に答える
18

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

ここでの答えのどれよりもはるかに優れた解決策があります: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)
}
于 2017-06-23T17:53:38.293 に答える
7

パッケージを使用でき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
于 2013-01-27T12:26:09.540 に答える
6

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,...) 
}
于 2016-02-04T14:53:48.653 に答える
4

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

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

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

MacOSXclipboardRからのデータのインポート

data <- read.table(pipe("pbpaste"), sep="\t", header=T)
于 2015-11-03T05:01:29.717 に答える
1

WindowsとMacの両方で機能するいくつかのジェネリック関数を書いたところです。Windowsバージョンで同じパラメーターを使用するために、入力および出力として文字ベクトルを使用しています。

于 2017-01-24T20:01:23.873 に答える