gpt4 book ai didi

r - 用 roxygen2 覆盖 NAMESPACE 和 Rd

转载 作者:行者123 更新时间:2023-12-03 20:33:23 24 4
gpt4 key购买 nike

我用 RStudio 创建了一个新包。在“配置构建工具”中,我选中了“使用 Roxygen 生成文档”。

我第一次单击“构建” Pane 中的“文档”时,一切正常:

==> roxygen2::roxygenize('.', roclets=c('rd', 'collate', 'namespace'))

First time using roxygen2. Upgrading automatically...
Writing hello.Rd
Writing NAMESPACE
Documentation completed

我得到这个命名空间:
# Generated by roxygen2: do not edit by hand

export(hello)

和这个文件 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 ,然后我遇到了两个问题。
首先,会出现这个窗口:

enter image description here

如果我单击"is",则没有任何 react 。

其次,似乎 roxygen2无法覆盖 hello.Rd ,因为我在“构建” Pane 中得到了这个文本:
==> 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.

我发现更新文档的唯一方法是运行:
roxygen2::roxygenize(clean=TRUE)

此命令首先清除所有内容,NAMESPACE 和 Rd文件,然后生成 NAMESPACE 和 Rd文件。

不知道是不是 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
  • RStudio 0.99.892
  • Windows 7
  • R version 3.3.1
  • 最佳答案

    问题的原因。
    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 存在一些问题网络驱动器的函数,我们可以在这里看到例如: https://github.com/eddelbuettel/digest/issues/13 .

    解决方法

    如果 R.utils::fileAccess,问题就解决了将用于代替 file.accessdigest::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()

    关于r - 用 roxygen2 覆盖 NAMESPACE 和 Rd,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40530968/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com