【发布时间】:2019-04-12 02:28:11
【问题描述】:
此外,某些函数,例如 library() 和 require(),需要包名才能完成。 RStudio 会自动推断特定函数是否需要包名并提供这些名称作为完成...
我的问题是:如何?我正在编写一个将包名称作为参数的自定义函数,但 RStudio 仅使用对象和函数名称完成参数,我不知道 RStudio 正在接收的 library() 和 require() 代码是什么开。
我的功能是:
unpack <- function(...,
lib = NULL,
repos = getOption("repos")) {
pkgs <- sapply(match.call(expand.dots = TRUE)[-1], as.character)
new.pkgs <-
pkgs[!(
pkgs %in% installed.packages(lib.loc = lib)[, "Package"]
)]
if (length(new.pkgs))
install.packages(new.pkgs,
lib = lib,
repos = repos)
sapply(pkgs, require,
lib.loc = lib,
character.only = TRUE)
}
【问题讨论】:
-
这里有相关的讨论(关于扩展 RStudio 的自动完成行为):github.com/ropensci/unconf17/issues/52,尽管在 1.5 年内没有明显的活动。
-
@r2evans 啊 - 所以答案可能是 RStudio 为名为
library和require的函数编写了异常代码。我想我可以尝试掩盖这两个中的一个……哈哈 -
完美,谢谢@hrbrmstr!不是我希望的答案,而是我需要的确切答案。实际上,我只是尝试将我的函数命名为
library,而且,是的,效果很好。感觉很不合适,但是当法律变得不公正时,正义就变成了不法之徒。 -
是的,屏蔽功能,可能会出什么问题?
标签: r autocomplete package rstudio r-infer