【问题标题】:Error in get(as.character(FUN), mode = "function", envir = envir) : object 'guide_legend' of mode 'function'获取错误(as.character(FUN),模式=“功能”,环境=环境):模式'功能'的对象'guide_legend'
【发布时间】:2020-05-27 23:33:32
【问题描述】:

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

输入数据示例

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 文档 (vignette) 中调用此测试函数。这是我得到的错误:

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

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

Expected_output

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

【问题讨论】:

  • 你有没有加载包ggnewscale
  • 我在测试函数的 roxygen 骨架中定义了@importFrom ggnewscale new_scale_color,在 Imports 下的描述中我有 ggplot2 和 ggnewscale,在 NAMESPACE 我有 importFrom(ggnewscale,new_scale_color) 和 importFrom(ggplot2,geom_point )、importFrom(ggplot2,geom_rug)、importFrom(ggplot2,ggplot)。因此,我认为所有内容都在 NAMESPACE 和描述中定义,但是如果这就是你的意思,我没有在任何地方调用 library(ggnewscale)?

标签: r package r-markdown


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-03
    • 1970-01-01
    • 2021-01-13
    • 1970-01-01
    • 1970-01-01
    • 2012-09-17
    相关资源
    最近更新 更多