我正在整理一个R包。我想在小插图中显示示例代码,其中示例数据文件(包含在包装中)用于生成(示例)输出文件。
我在Hadley Wickham的帖子(http://r-pkgs.had.co.nz/data.html)中了解了有关使用示例数据的信息,并认为我应该将示例数据保留为原始数据,因为必须对其进行解析以生成输出。
所以,我在包结构中创建了一个目录
/Users/userName/myPackage/inst/extdata/
带有子目录InputFiles和OutputFiles。
然后将示例文件(exampleData.csv)放在InputFiles子目录(/ Users / userName / myPackage / inst / extdata / InputFiles)内。
我的小插图位于:
/Users/userName/myPackage/vignettes/myPackage.Rnw
它包含以下语法:
<<eval=FALSE>>=
fileString = "/Users/userName/myPackage/inst/extdata/InputFiles/exampleData.csv"
doFunction1(fileString)
doFunction2(fileString)
doFunction3(fileString, output ="Users/userName/myPackage/inst/extdata/OutputFiles")
@
开发此小插图及其示例数据集时遇到两个问题:
1)我不确定我对extdata文件的使用是否合适。根据前面提到的Hadley Wickham参考,这似乎是放置示例文件的最佳目录名称和位置。
2)我不确定如何使这些路径相对,而不是绝对路径,因为我目前拥有这些路径。如您所见,此示例代码不会自动运行。取而代之的是,我将其放在eval = FALSE的R块下,以便仅在此处列出供用户测试。运行示例代码后,用户还可以检查是否确实在(/ Users / userName / myPackage / inst / extdata / OutputFiles)中创建了输出文件。对于我来说,使用户在遵循示例时不必使用绝对路径的最佳方法是什么?是否可以仅从包目录myPackage中遵循相对路径?
我的数据文件由.csv,.htm和.text文件组成。过去,在构建软件包时,我将数据框另存为.rda文件,然后用户可以简单地使用:
data(example.rda)
读取该文件。他们不必编写整个路径。有没有类似的功能可用于读取.csv,.html和.text文件,然后将它们输出到示例输出位置-无需使用完整路径?是否可以使用帮助功能来读取输入文件并写入输出文件?如果/ man文件夹中的各种示例帮助功能将示例输出文件实际保存到示例输出文件夹,这会在CRAN中引起冲突吗?
在包中引用文件的标准方法是:
# gives root package directory
system.file(package="myPackage")
# specific file
system.file("extdata/InputFiles/exampleData.csv", package="myPackage")
# best is to use cross-platform way to write a file path:
system.file("extdata", "InputFiles", "exampleData.csv", package="myPackage")
使用进行开发时devtools
,inst
子目录将被忽略,因此您无需担心绝对路径。这应该在小插图中起作用。请注意,我认为一个小插图仅使用软件包的已安装版本,而不使用您可能已在开发环境中加载的小版本(特别是,devtools::load_all()
不更改用于构建小插图的代码,您必须首先使用install()
它) 。
最后,使用data()
有点过时。Hadley和其他人建议使用惰性数据,因此数据会自动显示在名称空间中。请尝试以下方法DESCRIPTION
。
LazyData: true
LazyDataCompression: xz
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句