在构建一个简单的测试包以隔离此问题后,我在运行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)
当您链接到指向其他名称的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!")
}
答案 0 :(得分:8)
这是因为链接是根据文件的名称而不是别名创建的。如果您只使用\link{foo}
,foo
是主题(因此您可以毫无问题地使用别名)。但是,您可以使用以下任何一种形式:
\link[pkg]{foo}
\link[pkg:foo]{bar}
foo
需要是文件,因此您只能使用名称而不能使用别名。如果您选中?dplyr::mutate
,则会看到mutate
是名称(左上角),transmute
是别名。因此,当您尝试使用别名时,链接将(可能)起作用,但您将看到所看到的警告。
为避免这种情况,您需要:
\link[dplyr:mutate]{dplyr::transmute()}
供参考:https://cran.r-project.org/doc/manuals/R-exts.html#Cross_002dreferences