13

假设您在 R 中有这些数据,并且您想在 stackoverflow 上发布一个问题。如果其他人可以最好地帮助您,如果他们可以使用您的对象(数据框、向量等)的副本,那就太好了。

假设您的数据位于名为 site.data 的数据框中

> site.data
    site year     peak
1  ALBEN    5 101529.6
2  ALBEN   10 117483.4
3  ALBEN   20 132960.9
8  ALDER    5   6561.3
9  ALDER   10   7897.1
10 ALDER   20   9208.1
15 AMERI    5  43656.5
16 AMERI   10  51475.3
17 AMERI   20  58854.4

您如何将其打包,以便用户可以完全按照您的方式重新创建数据?

您想在不让人们下载文本文件并导入它的情况下执行此操作。

(注意:这些数据是从 REvolutions 博客的示例中提取的)

4

3 回答 3

20

dput 命令写入 ASCII 表示。如果你放“”而不是文件名,它将把它写到控制台

> dput(site.data,"")
structure(list(site = structure(c(1L, 1L, 1L, 2L, 2L, 2L, 3L, 
3L, 3L), .Label = c("ALBEN", "ALDER", "AMERI"), class = "factor"), 
    year = c(5L, 10L, 20L, 5L, 10L, 20L, 5L, 10L, 20L), peak = c(101529.6, 
    117483.4, 132960.9, 6561.3, 7897.1, 9208.1, 43656.5, 51475.3, 
    58854.4)), .Names = c("site", "year", "peak"), row.names = c(1L, 
2L, 3L, 8L, 9L, 10L, 15L, 16L, 17L), class = "data.frame")

只需复制结构并将其放在示例代码中的“site.data=”之后,人们就可以完全按照您的方式重新创建数据框。

于 2009-08-12T09:27:23.093 回答
6

实际上,在您的原始示例中,您以列格式粘贴数据的方式工作得很好。我刚刚从网页上复制了您的文本,然后这样做了(使用 OS X,所以我有一个不错的“粘贴”命令):

> site.data <- read.table(pipe("pbpaste"))

对于作为测试用例发布的玩具数据,这通常是最好的方法。正如 dggoldst 所说,为了更加精确, dput() 很好。

于 2009-08-12T16:40:41.543 回答
3

另一种方法,类似于 Ken 的方法是使用剪贴板(在 Windows 上,可能在 linux 上)。我会复制你的代码并运行

> site.data <- read.table("clipboard", header=T)
> site.data
    site year     peak
1  ALBEN    5 101529.6
2  ALBEN   10 117483.4
3  ALBEN   20 132960.9
8  ALDER    5   6561.3
9  ALDER   10   7897.1
10 ALDER   20   9208.1
15 AMERI    5  43656.5
16 AMERI   10  51475.3
17 AMERI   20  58854.4
于 2010-08-12T09:30:53.437 回答