2012-11-18 324 views
42

標題說明了一切:我在另一個應用程序中打開了我的數據(例如電子表格,如Excel或文本編輯器)。如果我將這些數據複製到我的操作系統剪貼板中,如何將它作爲data.frame讀入到R中?如何從剪貼板複製和粘貼數據到R中?

+2

可能重複的[代碼導入從堆棧溢出查詢數據到R](http://stackoverflow.com/questions/10849270/code-to -import-data-from-a-stack-overflow-query-into -r) – GSee

回答

47

假設你已經在Windows剪貼板中的數據(例如,複製數據從Excel),以將數據放到R中使用命名copdat一個變量:

copdat <- read.delim("clipboard") 

如果要複製從數據命名rdat到Windows剪貼板(例如複製到Excel)R變量使用:

write.table(rdat, "clipboard", sep="\t", row.names=FALSE, col.names=FALSE) 
6

輸入data = as.numeric(read.table(text = "125 140 200 200 190 ", sep = " "))您的數字介於text = " "之間的引號。

+4

'read.table(text = readClipboard(),sep =「」)'可能會更好。 –

+0

這與此類似:http://stackoverflow.com/a/10004019。使用該代碼,您可以執行'data = as.numeric(qw('125 140 200 200 190'))' – GSee

+4

@ DavidJ.Harris,'readClipboard'只適用於Windows。 – GSee

34

的名稱和使用的「剪貼板」確切的連接根據操作系統的不同而不同。

的Windows:

x <- read.delim("clipboard") 

爲Mac OS:

x <- read.delim(pipe(「pbpaste」)) 

這工作,因爲read.delim,像許多功能,將接受一系列的連接類型的不僅僅是一個文件。對於Mac,我們實際上使用的是管道。 help(connections)是相當豐富的。

該心理包有一個功能read.clipboard(),通過測試您的操作系統,這使得這一點更容易。

正如別人在這裏指出的,您也可以寫入剪貼板。通常有32千限制,其可以通過使用如在加入剪貼板後連字符和數字,例如,傳遞到256千值得從對象數據的DF與被升高:

write.table(df, "clipboard-256") 
+1

在Ubuntu中,您可以用另一個* nix中的'xsel -bo'或可能的'xclip'替換'pbpaste'。 – isomorphismes

+0

我希望這是一個被接受的答案......(當然,我使用OS X)。 – Blaszard

+0

@isomorphismes所以ubuntu命令將是'read.delim(pipe(「xsel -bo」))'?我試過了,但沒有奏效。該命令是否適用於LibreOffice複製/粘貼? – Reilstein

6

如果要從電子表格表格數據看,我用下面的代碼

read.table(file = "clipboard", sep = "\t", header=TRUE) 
0

我需要一個複合複製到Windows ,而read.table()輸出與在我的網址引號字符向量。 取而代之,我從包中使用writeClipboard(URL,format=1),它的確有竅門。

0

看它的簡單的演示,部分Clipboard

剪貼板 文件可以在模式的「r」描述=「剪貼板」被用於只要。這讀取X11主要選擇(請參閱http://standards.freedesktop.org/clipboards-spec/clipboards-latest.txt),也可以指定爲「X11_primary」,次要選擇指定爲「X11_secondary」。在大多數系統中,剪貼板選擇(由「編輯」菜單中的「複製」使用)可以指定爲「X11_clipboard」。 打開剪貼板進行閱讀時,內容將立即複製到連接的內部存儲器中。 希望寫入其中一個X11選擇的Unix用戶可以通過xclip(http://sourceforge.net/projects/xclip/)或xsel(http://www.vergenet.net/~conrad/software/xsel/)(例如通過管道(「xclip -i」,「w」))爲主要選擇進行此操作。 macOS用戶可以使用管道(「pbpaste」)和管道(「pbcopy」,「w」)來讀寫該系統的剪貼板。

所以,例如用magrittr:

base::file(description='clipboard') %>% readLines