r语言 - get(as.character(FUN), mode = "function" , envir = envir) 中的错误:模式 'function' 的对象'guide_leg



我正在构建一个包,但在构建小插图时遇到了问题。当我尝试编织小插图时,我收到一条错误消息,但是从控制台运行函数时没有错误。

输入数据示例

a <- c(1,1,2,2,3,3,4,4,5,5)
b <- c("T", "T", "N","N", "N","N", "T", "T", "N", "N")
c <- c("car","bike","car","bike","car","bike","car","bike","car","bike")
d <- c(10,12,15,19,25,29,38,47,66,90)
data <- data.frame(a,b,c,d)
colnames(data) <- c("xaxis", "rug", "type", "val")

在包 .r 文件中,这是一个我想调用的函数:

#' Test
#'
#' @param data test data
#'
#' @return
#' @importFrom ggplot2 ggplot geom_point geom_rug
#' @importFrom ggnewscale new_scale_color
#' @export
#'
test <- function(data){
ggplot(data, aes(x = xaxis, y = val, color = type, group = type)) + geom_point() +
new_scale_color() + geom_rug(aes(x = xaxis, color =rug), sides = "b")
}

我检查并安装了软件包,并尝试在 RMarkdown 文档(小插图(中调用此测试函数。这是我得到的错误:

get(as.character(FUN(,mode = "function", envir = envir( 中的错误:找不到模式"function"的对象"guide_legend"调用:...bump_aes_scales -> lapply -> 乐趣 -> match.fun -> 执行停止

但是,当我在控制台中调用此函数时,我得到的预期绘图没有错误消息:

Expected_output

此外,当我从测试功能中删除 new_scale_color(( 时,我没有收到任何错误,并且小插图被完美编织。有没有人知道这里似乎有什么问题以及如何解决它?

问题似乎出在 ggnewscale 包中,在这一行,它试图创建对ggplot::guide_legend的调用。这是通过match.fun完成的,然后在此行抛出错误。这可能是因为match.fun只回顾命名函数的 2 层父环境。您可以尝试在有问题的函数之前将一个非导出的本地别名函数添加到您自己的包中:

guide_legend <- function(...) ggplot2::guide_legend(...)

最新更新