使用dput()的示例

Tyl*_*ler 7 r reproducible-research

作为新用户,由于不可重现,我的问题没有得到充分回答.我阅读了有关生成可重现代码但有用的线程.特别是如何使用dput()函数丢失了.

有人可以一步一步地提供如何使用iris df来使用dput(),例如它会非常有用.

LAP*_*LAP 7

使用iris手工包含的数据集,R我们可以看到如何dput()工作:

data(iris)
head(iris)

  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
Run Code Online (Sandbox Code Playgroud)

现在我们可以使用整个数据集了dput(iris).在大多数情况下,整个数据集不需要提供Stackoverflow问题,因为相关变量的几行就足以作为工作数据示例.

有两件事情派上用场:该head()函数仅输出数据帧/矩阵的前六行.此外,R(通过括号)索引允许您仅选择特定列.

因此,我们可以dput()使用这两者的组合来限制输出:

dput(head(iris[, c(1, 3)]))

structure(list(Sepal.Length = c(5.1, 4.9, 4.7, 4.6, 5, 5.4), 
    Petal.Length = c(1.4, 1.4, 1.3, 1.5, 1.4, 1.7)), .Names = c("Sepal.Length", 
"Petal.Length"), row.names = c(NA, 6L), class = "data.frame")
Run Code Online (Sandbox Code Playgroud)

将为我们提供重现iris数据集第1列和第3列的第一行(最多)六行的代码.

df <- structure(list(Sepal.Length = c(5.1, 4.9, 4.7, 4.6, 5, 5.4), 
    Petal.Length = c(1.4, 1.4, 1.3, 1.5, 1.4, 1.7)), .Names = c("Sepal.Length", 
"Petal.Length"), row.names = c(NA, 6L), class = "data.frame")

> df
  Sepal.Length Petal.Length
1          5.1          1.4
2          4.9          1.4
3          4.7          1.3
4          4.6          1.5
5          5.0          1.4
6          5.4          1.7
Run Code Online (Sandbox Code Playgroud)

如果第一行不够,我们可以跳过使用head()并仅依赖索引:

dput(iris[1:20, c(1, 3)])

structure(list(Sepal.Length = c(5.1, 4.9, 4.7, 4.6, 5, 5.4, 4.6, 
5, 4.4, 4.9, 5.4, 4.8, 4.8, 4.3, 5.8, 5.7, 5.4, 5.1, 5.7, 5.1
), Petal.Length = c(1.4, 1.4, 1.3, 1.5, 1.4, 1.7, 1.4, 1.5, 1.4, 
1.5, 1.5, 1.6, 1.4, 1.1, 1.2, 1.5, 1.3, 1.4, 1.7, 1.5)), .Names = c("Sepal.Length", 
"Petal.Length"), row.names = c(NA, 20L), class = "data.frame")
Run Code Online (Sandbox Code Playgroud)

会给我们前20行:

df <- structure(list(Sepal.Length = c(5.1, 4.9, 4.7, 4.6, 5, 5.4, 4.6, 
5, 4.4, 4.9, 5.4, 4.8, 4.8, 4.3, 5.8, 5.7, 5.4, 5.1, 5.7, 5.1
), Petal.Length = c(1.4, 1.4, 1.3, 1.5, 1.4, 1.7, 1.4, 1.5, 1.4, 
1.5, 1.5, 1.6, 1.4, 1.1, 1.2, 1.5, 1.3, 1.4, 1.7, 1.5)), .Names = c("Sepal.Length", 
"Petal.Length"), row.names = c(NA, 20L), class = "data.frame")

> df
   Sepal.Length Petal.Length
1           5.1          1.4
2           4.9          1.4
3           4.7          1.3
4           4.6          1.5
5           5.0          1.4
6           5.4          1.7
7           4.6          1.4
8           5.0          1.5
9           4.4          1.4
10          4.9          1.5
11          5.4          1.5
12          4.8          1.6
13          4.8          1.4
14          4.3          1.1
15          5.8          1.2
16          5.7          1.5
17          5.4          1.3
18          5.1          1.4
19          5.7          1.7
20          5.1          1.5
Run Code Online (Sandbox Code Playgroud)

  • 我仍然不确定,如果我想在 stackoverflow 中发布我的 MWE,下一步该怎么做。应该只复制并粘贴“struct()”中的内容 (3认同)
  • @msh855 是的,包括`struct()`。 (2认同)
  • @msh855 我知道这很旧,但我发表评论是为了帮助其他人。您应该始终做的一件事是获取您想要发布的代码并尝试在干净的 R 会话中运行它。您将更好地了解您为试图帮助您的人提供了什么。 (2认同)