繁体   English   中英

get(as.character(FUN), mode = "function", envir = envir) 中的错误:模式 'function' 的对象 'guide_legend'

[英]Error in get(as.character(FUN), mode = "function", envir = envir) : object 'guide_legend' of mode 'function'

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

输入数据示例

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 -> FUN -> 匹配。有趣 -> 停止执行

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

预期输出

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM