将堆栈溢出查询中的数据导入R的代码
当我试图在Stack Overflow中回答一个关于R的问题时,我的大部分时间都花在了重建作为示例给出的数据上(除非问题作者已经足够好地将它们作为R代码提供) 所以我的问题是,如果有人只是问了一个问题,然后用以下方式给出了他的样本数据框:将堆栈溢出查询中的数据导入R的代码,r,R,当我试图在Stack Overflow中回答一个关于R的问题时,我的大部分时间都花在了重建作为示例给出的数据上(除非问题作者已经足够好地将它们作为R代码提供) 所以我的问题是,如果有人只是问了一个问题,然后用以下方式给出了他的样本数据框: a b c 1 11 foo 2 12 bar 3 13 baz 4 14 bar 5 15 foo 您是否有技巧或函数可以轻松地将其导入R会话,而不必键入整个data.frame()指令 提前感谢您的任何提示 PS:如果我的问题标题中的术语“查询”不
a b c
1 11 foo
2 12 bar
3 13 baz
4 14 bar
5 15 foo
您是否有技巧或函数可以轻松地将其导入R会话,而不必键入整个data.frame()
指令
提前感谢您的任何提示
PS:如果我的问题标题中的术语“查询”不是很好,那么很抱歉,但是在堆栈溢出中,您似乎不能在问题标题中使用“问题”一词:-)也许textConnection()
就是您想要的:
R> zz <- read.table(textConnection("a b c
1 11 foo
2 12 bar
3 13 baz
4 14 bar
5 15 foo"), header=TRUE)
R> zz
a b c
1 1 11 foo
2 2 12 bar
3 3 13 baz
4 4 14 bar
5 5 15 foo
R>
R>zz-zz
a、b、c
111foo
2 12巴
3 13巴兹
4 14巴
5 15福
R>
它允许您将文本视为阅读的“连接”。您也可以只是复制和粘贴,但从剪贴板进行访问更依赖于操作系统,因此便携性较差 您还可以要求提问者使用哪种方式转储任何数据结构,而这种方式只能复制粘贴到R.e.g
> zz
a b c
1 1 11 foo
2 2 12 bar
3 3 13 baz
4 4 14 bar
5 5 15 foo
> dput(zz)
structure(list(a = 1:5, b = 11:15, c = structure(c(3L, 1L, 2L,
1L, 3L), .Label = c("bar", "baz", "foo"), class = "factor")), .Names = c("a",
"b", "c"), class = "data.frame", row.names = c(NA, -5L))
> xx <- structure(list(a = 1:5, b = 11:15, c = structure(c(3L, 1L, 2L,
+ 1L, 3L), .Label = c("bar", "baz", "foo"), class = "factor")), .Names = c("a",
+ "b", "c"), class = "data.frame", row.names = c(NA, -5L))
> xx
a b c
1 1 11 foo
2 2 12 bar
3 3 13 baz
4 4 14 bar
5 5 15 foo
>zz
a、b、c
111foo
2 12巴
3 13巴兹
4 14巴
5 15福
>dput(zz)
结构(列表a=1:5,b=11:15,c=c结构(3L,1L,2L,
1L,3L),.Label=c(“bar”,“baz”,“foo”),class=“factor”),.Names=c(“a”,
“b”,“c”,class=“data.frame”,row.names=c(NA,-5L))
>xx xx
a、b、c
111foo
2 12巴
3 13巴兹
4 14巴
5 15福
最新版本的R现在提供了比textConnection
更低的按键选项,用于将列数据输入read.table和friends。面对这一点:
zz
a b c
1 1 11 foo
2 2 12 bar
3 3 13 baz
4 4 14 bar
5 5 15 foo
你可以简单地插入:
countries只想添加这个,因为我现在经常使用它,我认为它非常有用。有一个包溢出(下面的安装说明),它具有读取复制的数据帧的功能。假设我从一个SO post开始,它包含如下所示的数据,但没有dput
输出
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5.0 3.6 1.4 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa
现在,如果我直接复制数据,然后运行下面的
library(overflow)
soread()
# data.frame “mydf” created in your workspace
# Sepal.Length Sepal.Width Petal.Length Petal.Width Species
# 1 5.1 3.5 1.4 0.2 setosa
# 2 4.9 3.0 1.4 0.2 setosa
# 3 4.7 3.2 1.3 0.2 setosa
# 4 4.6 3.1 1.5 0.2 setosa
# 5 5.0 3.6 1.4 0.2 setosa
# 6 5.4 3.9 1.7 0.4 setosa
我现在有一个名为mydf
的数据帧,与我在全局环境中复制的数据帧相同,因此我不必等待OP发布其数据帧的dput
。我可以使用out
参数更改数据帧的名称,该参数(显然)默认为mydf
。还有一些其他有用的函数用于处理包中的SO POST(如sopkgs()
,它临时安装一个包,以便您可以帮助解答有关以前未安装的包的问题)
如果将库(溢出)
放在.Rprofile
中,则soread()
可以非常快速地从SO帖子导入数据
溢出可从GitHub获得,并可与一起安装
library(devtools)
install_github("overflow", "sebastian-c")
啊,是的,太好了,谢谢!使用zz@juba,read,从剪贴板进行访问在我的系统上运行良好。table
还提供了一个text
参数,因此无需创建连接read.table(text=“a b c.
也应该可以。剪贴板不错!@juba注意,剪贴板afaik并不适用于所有系统。我相信(如果我错了,请纠正我)它是特定于Windows的。它在我的linux系统上运行良好。有一个“剪贴板”“连接手册页的部分,包含详细信息:如果我理解正确,在windows下读取和写入剪贴板是可行的,在linux下读取是开箱即用的,而在linux上写入和在Mac OSX上读取/写入需要对Mac的pipe()
进行特定调用(其中?剪贴板
带您进入连接帮助页面):“Mac OS X用户可以使用管道(“pbpaste”)和管道(“pbcopy”、“w”)来读取和写入系统的剪贴板。”有效的使用方法是:zz
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5.0 3.6 1.4 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa
library(overflow)
soread()
# data.frame “mydf” created in your workspace
# Sepal.Length Sepal.Width Petal.Length Petal.Width Species
# 1 5.1 3.5 1.4 0.2 setosa
# 2 4.9 3.0 1.4 0.2 setosa
# 3 4.7 3.2 1.3 0.2 setosa
# 4 4.6 3.1 1.5 0.2 setosa
# 5 5.0 3.6 1.4 0.2 setosa
# 6 5.4 3.9 1.7 0.4 setosa
library(devtools)
install_github("overflow", "sebastian-c")