首页 > 解决方案 > 运行 zip 时如何修复命名空间错误?

问题描述

当我按如下方式运行以下代码时出现命名空间错误:警告:“zipr”中的错误不是“命名空间:zip”中的导出对象[没有可用的堆栈跟踪]。关于这可能是什么原因的任何建议?提前致谢。

library(shiny)
library(ggplot2)

ui <- fluidPage(
  plotOutput("p1"), 
  plotOutput("p2"),
  plotOutput("p3"),
  downloadButton("allgraphs", "Download")
)

server = function(input, output) {
  df<-data.frame(q=c(1,3,5,7,9),w=c(2,4,6,8,10),z=c(1,2,3,4,5))

  p1 <- reactive({
    ggplot(df,aes(x=q,y=w)) + geom_point()
  })
  p2 <- reactive({
    ggplot(df,aes(x=z,y=w))+geom_point()
  })
  p3 <- reactive({
    ggplot(df,aes(x=q,y=z))+geom_point()
  })

  output$p1 <- renderPlot({ 
    p1()
  })
  output$p2 <- renderPlot({ 
    p2()
  })
  output$p3 <- renderPlot({ 
    p3()
  })

  output$allgraphs = downloadHandler(
    filename = function() {
      'all_images.zip'
    }, 
    content = function(fname) {
      fs <- replicate(3, tempfile(fileext = ".png"))
      ggsave(fs[1], p1())
      ggsave(fs[2], p2())
      ggsave(fs[3], p3())
      zip::zipr(zipfile=fname, files=fs)
    },
    contentType = "application/zip")
}

shinyApp(ui, server)

标签: r

解决方案


您需要将 zip 包更新到最新版本。我在 1.0.0 版的 zip 中遇到了同样的问题,它不导出任何 zipR 对象,并且 openxlsx 加载会失败。将 zip 升级到 v2.1.0,确实导出了一个 zipR 对象,解决了这个问题。


推荐阅读