首页 文章

在r中使用reprex包创建可重现的示例,其中正在读取本地文件

提问于
浏览
0

我经常使用 reprex::reprex 创建可重复的 R 代码示例,以获取其他人的帮助以消除代码中的错误 . 通常,我使用 irismtcars 等数据集创建最少的示例,并且效果很好 . 但是,每当我需要使用 own 数据时,我总是无法使用 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 package(v0.2.0)创建于2018-02-19 .

其他地方(How to make a great R reproducible example?)之前有一个很好的讨论 . 作者建议使用像 dput 这样的东西 -

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

但也提到 -

如果您的数据框具有多个级别的因子,则输出输出可能不实用,因为它仍将列出所有可能的因子级别,即使它们不存在于数据子集中 .

所以,如果我想在我的完整数据集中工作,这不是一个好的选择 .

综上所述:

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

1 回答

  • 1

    缺省情况下,reprex强烈鼓励在会话临时目录中执行 . 但有时候引用特定的本地文件是不可避免的,所以是的,必须有办法做到这一点 .

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

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

    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包创建于2018-09-19(v0.2.1)

    使用 outfile = NAoutfile = "path/to/desired/file/base" 是断言对 reprex() 生成的所有文件的位置的控制的一般模式 .

相关问题