在RStudio中构建软件包时,如何解决Rd警告"丢失文件链接"?

r_a*_*anb 11 r build package

在构建一个简单的测试包以隔离此问题后,我在运行时收到以下警告Rcmd.exe INSTALL --nomultiarch --with-keep.source simpleTest:

* installing to library 'C:/Users/user/Documents/R-dev'
* installing *source* package 'simpleTest' ...
** R
** preparing package for lazy loading
** help
*** installing help indices
  converting help for package 'simpleTest'
    finding HTML links ...    hello                                   html  
Rd warning: C:/user/RPackages/simpleTest/man/hello.Rd:11: missing file link 'transmute'
 done
** building package indices
** testing if installed package can be loaded
* DONE (simpleTest)
Run Code Online (Sandbox Code Playgroud)

当您链接到指向不同名称的Rd文件的函数时,会发生此问题.举例来说,在我的SimpleTest的包,文档链接到两个dplyr::mutate()dplyr::transmute(),这两者都记录在mutate.Rd文件.前一个链接不会导致Rd警告,而后者则会.但是,当您查看当前包的帮助页面时,这两个链接都有效.

simpleTest包的.R文件包含在下面.我运行devtools::document()然后在骨架包目录中构建包.


hello.R

#' print hello
#'
#' This does something less complicated than \code{\link[dplyr:mutate]{dplyr::mutate()}} 
#' and \code{\link[dplyr:transmute]{dplyr::transmute()}}.

#' @export
hello <- function() {
  print("Hello, world!")
}
Run Code Online (Sandbox Code Playgroud)

Jor*_*eys 10

这是因为链接是根据文件的名称而不是别名创建的.如果你只是使用\link{foo},foo是一个主题(因此你可以使用别名没有问题).但是,您可以使用以下任何一种形式:

\link[pkg]{foo}
\link[pkg:foo]{bar}
Run Code Online (Sandbox Code Playgroud)

foo需要是一个文件,因此您只能使用名称而不是别名.如果你检查?dplyr::mutate,你会看到这mutate是名称(左上角)并且transmute是别名.因此,当您尝试使用别名时,链接将(可能)起作用,但您将看到所看到的警告.

为避免这种情况,您需要:

\link[dplyr:mutate]{dplyr::transmute()}
Run Code Online (Sandbox Code Playgroud)

供参考:https://cran.r-project.org/doc/manuals/R-exts.html#Cross_002dreferences