2

我经常使用reprex::reprex创建可重现的R代码示例来获得其他人的帮助以消除我的代码中的错误。通常,我使用irisor之类的数据集创建最小的示例mtcars,并且效果很好。但是我总是无法在reprex需要使用自己的数据的任何时候使用,因为问题非常具体,我不能依赖datasets库中的数据集。

在这种情况下,我收到以下错误:

# loading needed libraries
library(ggplot2)
library(cowplot)
library(devtools)

# reading the datafile
data <- utils::read.csv(file = "data.csv")
#> Warning in file(file, "rt"): cannot open file 'data.csv': No such file or
#> directory
#> Error in file(file, "rt"): cannot open the connection

reprex 包(v0.2.0)于 2018 年 2 月 19 日创建。

在其他地方有一个很好的讨论reprex如何制作一个很棒的 R 可重现示例?)。作者建议使用类似dput-

如果您有一些使用这些技巧难以构建的数据,那么您始终可以使用例如 或索引来制作原始数据的子head()subset()。然后使用例如。dput()给我们一些可以R立即放入的东西

但也提到——

如果您的数据框有一个具有多个级别的因子,则dput输出可能会很笨拙,因为它仍会列出所有可能的因子级别,即使它们不存在于您的数据子集中。

因此,如果我想使用我的完整数据集,这不是一个好的选择。

总之:

任何人都知道如何创建一个reprex独立的,即使它依赖于使用包含所有数据的本地文件?

4

1 回答 1

4

默认情况下,reprex 强烈建议在会话临时目录中执行。但有时不可避免地要引用特定的本地文件,所以是的,必须有办法做到这一点。

要请求在当前工作目录中完成所有工作,请设置outfile = NA. (更一般地,您可以使用outfile参数来指定基本文件名和路径。)

如果我提交此表示,并将工作目录设置为我的主目录:

reprex({
  getwd()
  writeLines(c("V1,V2","a,b"), "precious_data.csv")
  list.files(pattern = "*.csv")
  read.csv("precious_data.csv")
  },
  outfile = NA,
  venue = "so"
)

我得到这个输出:

getwd()
#> [1] "/Users/jenny"
writeLines(c("V1,V2","a,b"), "precious_data.csv")
list.files(pattern = "*.csv")
#> [1] "precious_data.csv"
read.csv("precious_data.csv")
#>   V1 V2
#> 1  a  b

reprex 包(v0.2.1)于 2018 年 9 月 19 日创建

使用outfile = NAoroutfile = "path/to/desired/file/base"是断言控制由reprex().

于 2018-09-20T04:40:18.380 回答