标题说明了一切:我在另一个应用程序中打开了我的数据(例如,电子表格,如Excel或文本编辑器).如果我将该数据复制到我的操作系统剪贴板,我如何将其作为data.frame读入R?
bil*_*080 60
假设您在Windows剪贴板中有数据(例如,从Excel复制的数据),将该数据放入copdat
R中命名的变量中使用:
copdat <- read.delim("clipboard")
Run Code Online (Sandbox Code Playgroud)
如果要从名为rdat
Windows剪贴板的R变量中复制数据(例如,要复制到Excel),请使用:
write.table(rdat, "clipboard", sep="\t", row.names=FALSE, col.names=FALSE)
Run Code Online (Sandbox Code Playgroud)
Mat*_*agg 48
用于"剪贴板"的名称和确切连接因操作系统而异.
对于Windows:
x <- read.delim("clipboard")
Run Code Online (Sandbox Code Playgroud)
对于Mac OS:
x <- read.delim(pipe(“pbpaste”))
Run Code Online (Sandbox Code Playgroud)
这是有效的,因为与许多函数一样,read.delim将接受除文件之外的一系列连接类型.对于Mac,我们实际上使用的是管道.help(connections)
非常有用.
psych包有一个功能read.clipboard()
,通过测试你的操作系统,使这更容易一些.
正如其他人在此处所述,您也可以写入剪贴板.通常有32 K的限制,可以通过在剪贴板后添加连字符和数字来提高,例如,从对象df传递高达256 K的数据:
write.table(df, "clipboard-256")
Run Code Online (Sandbox Code Playgroud)
psy*_*ics 10
如果您想从电子表格中读取表格数据,我使用了以下代码
read.table(file = "clipboard", sep = "\t", header=TRUE)
Run Code Online (Sandbox Code Playgroud)
有一个R package/RStudio插件datapasta
,它可以非常巧妙地完成 - 请参阅https://CRAN.R-project.org/package=datapasta.下面的图片展示了它的简洁性
我已经测试过并且在 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"
Run Code Online (Sandbox Code Playgroud)
然后,使用 read.table() 读取文本字符串
density_water <- read.table(textConnection(
object = density_water_str),
header = TRUE,
sep = "",
stringsAsFactors = FALSE)
Run Code Online (Sandbox Code Playgroud)
尚未在 Linux 或其他 Unix 系统上进行测试,但我相信它应该可以跨平台工作。
输入data = as.numeric(read.table(text = "125 140 200 200 190 ", sep = " "))
数字在text = " "
引号之间的位置.