我最近重写了一个包以使用新的(er)R 引用类对象。据我所知,我已经使用 NAMESPACE 文件中的 export() 导出了三个类,这应该可以工作。但是,当我测试构建包时,我在延迟加载阶段遇到错误:
** preparing package for lazy loading
Error in file(con, "rb") : invalid 'description' argument
ERROR: lazy loading failed for package ‘PACKAGE_NAME_HERE’
* removing ‘/Library/Frameworks/R.framework/Versions/3.0/Resources/library/PACKAGE_NAME_HERE’
我不确定这里有什么问题。我不知道它是否相关,但参考类确实通过将一些字段设置为访问器函数来将数据存储在 tmp 目录中的文件上 - 我不知道这是否是这里所说的(con,“ rb") 我猜这是一些连接的东西。有人对确保正确导出参考类有任何想法或建议吗?我的命名空间目前很简单 -
export(Main)
export(Mainseq)
export(Maintriplet)
这是我在 roxygen2 中使用@export 标签导出的三个参考类。我在做什么(或不做什么)会引发延迟加载错误?
(顺便说一句 - 我没有编译代码 - 所有 R,虽然引用类方法确实调用了一些未导出的内部函数,但这些应该是内部的,所以我认为我不需要导出它们。
谢谢,本。
编辑:
我的描述文件如下:
Package: HybRIDS
Type: Package
Title: Quick detection and dating of Recombinant Regions in DNA sequence data.
Version: 1.0
Date: 2013-03-13
Author: Ben J. Ward
Maintainer: Ben J. Ward <b.ward@uea.ac.uk>
Description: A simple R package for the quick detection and dating of Recombinant Regions in DNA sequence data.
License: GPL-2
Depends: ggplot2,grid,gridExtra,png,ape
我看不出这有什么问题- Depends 是正确的。
编辑:
我已经消除了描述中的第一个错误,但我仍然收到 con 错误。我认为这是因为 Mainseq 类(嵌套在 Main 类中)有一些字段:
FullSequenceFile = "character",
FullSequence = function( value ) {
if( missing( value ) ){
as.character( read.dna( file = FullSequenceFile, format = "fasta", as.matrix = TRUE ) )
} else {
write.dna( value, file = FullSequenceFile, format = "fasta" )
}
},
InformativeSequenceFile = "character",
InformativeSequence = function( value ) {
if( missing( value ) ){
as.character( read.dna( file = InformativeSequenceFile, format = "fasta", as.matrix = TRUE ) )
} else {
write.dna( value, file = InformativeSequenceFile, format = "fasta" )
}
}
这个想法是在初始化时,两个字符字段被填充到 tmpdir 中的临时文件的路径,并且当调用或编辑变量时,读取或写入包含变量数据的文件。但是,似乎在此路径可用之前正在访问变量,因为 up package build 会发生以下情况:
** preparing package for lazy loading
Warning in file(con, "rb") :
cannot open file '/var/folders/kp/clkqvqn9739ffw2755zjwy74_skf_z/T//RtmpLB8ESC/FullSequenceaba52ac591f3': No such file or directory
Error in file(con, "rb") : cannot open the connection