我用RStudio创建了一个新包。在"配置构建工具"中,我检查"使用Roxygen"生成文档。
我第一次点击" Document"在" Build"窗格,一切正常:
# Generated by roxygen2: do not edit by hand
export(hello)
我得到了这个NAMESPACE:
hello.Rd
和此文件% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/hello.R
\name{hello}
\alias{hello}
\title{Hello}
\usage{
hello(x)
}
\arguments{
\item{x}{string}
}
\value{
a string
}
:
hello.R
但是现在,我修改了文件roxygen2
,然后我遇到了两个问题。
首先,出现此窗口:
如果我点击"是",则没有任何反应。
其次,似乎hello.Rd
无法覆盖==> roxygen2::roxygenize('.', roclets=c('rd', 'collate', 'namespace'))
Error: The specified file is not readable: U:\Data\Rtests\testPackage\man/hello.Rd
Execution halted
Exited with status 1.
,因为我在" Build"中得到了这个文字。窗格:
roxygen2::roxygenize(clean=TRUE)
我发现更新文档的唯一方法是运行:
Rd
此命令首先清除所有内容,NAMESPACE和Rd
文件,然后生成NAMESPACE和Rtools
文件。
我不知道这是Sys.setenv(PATH="%PATH%;C:/Program Files/Rtools/gcc-4.6.3/bin;C:/Program Files/Rtools/gcc-4.6.3/bin64;C:/Program Files/Rtools/gcc-4.6.3/i686-w64-mingw32/bin;C:/Program Files/Rtools/bin")
路径的问题。我试着设置路径:
roxygen2 5.0.1
但这并没有解决问题。
我正在使用:
R version 3.3.1
RStudio 0.99.892
Windows 7
{http://www.maaamet.ee/}featureNameType is referenced but not defined.
答案 0 :(得分:4)
roxygen2
包取决于digest
包。在此函数调用digest
函数时,digest
包的file.access
函数生成错误(指定的文件不可读) :https://github.com/eddelbuettel/digest/blob/master/R/digest.R#L102。
我明白了:
> file.access("U:/Data", 4)
U:/Data
-1
这意味着U:/Data
没有读取权限。但事实并非如此:它具有读取权限。问题是我的U:
驱动器是一个"网络驱动器",网络驱动器的file.access
功能存在一些问题,我们可以在这里看到例如:{{ 3}}
如果在R.utils::fileAccess
函数中使用file.access
代替digest::digest
,问题就会解决。
因此,首先获取digest::digest
函数的代码并按如下所示进行修改。
mydigest <- function (object, algo = c("md5", "sha1", "crc32", "sha256",
"sha512", "xxhash32", "xxhash64", "murmur32"), serialize = TRUE,
file = FALSE, length = Inf, skip = "auto", ascii = FALSE,
raw = FALSE, seed = 0, errormode = c("stop", "warn", "silent"))
{
file.access <- R.utils::fileAccess
.... the code of the digest function here ...
}
然后做:
library(digest)
R.utils::reassignInPackage("digest", "digest", mydigest)
现在可以通过以下方式更新文档:
roxygen2::roxygenize()