为什么在 flexdashboard 的“传单-闪亮”集成中无法识别对象“输出”?

时间:2021-01-18 19:02:12

标签: r shiny leaflet sublimetext3 flexdashboard

问题

当我尝试在 Sublime Text 3 中使用 R markdown 构建时,出现以下错误:

Quitting from lines 33-73 (index.rmd) 
Error in output$map <- renderLeaflet({ : object 'output' not found
Calls: <Anonymous> ... handle -> withCallingHandlers -> withVisible -> eval -> eval

Reprex 代码

我想使用以下代码生成一个 .html 文件并使用 GitHub 页面进行部署。 下面的代码是我原始代码的简化版本。 REPREX 代码的要点是 找到一种在 flexdashboard 列环境中生成 REACTIVE 映射的方法。出于某种原因,这段代码 在包含 rmarkdown::run() 文件的当前目录的终端中使用 .rmd。 但是,在使用 Sublime Text 3 时,同样的代码会失败,从而产生上述问题。

有没有办法生成 .html 文件,使 REACTIVE 地图能够渲染/显示?

---
title: "COVID-19 Tracker"
date: "`r Sys.Date()`"
fontsize: 9pt
fontfamily: Segoe UI
output: flexdashboard::flex_dashboard
runtime: shiny
---
suppressMessages( require(dplyr) )
suppressMessages( require(stringr) )
suppressMessages( require(tidyr) )
suppressMessages( require(flexdashboard) )
suppressMessages( require(mustashe) )
suppressMessages( require(leaflet) )
suppressMessages( require(maps) )
suppressMessages( require(mapdata) )
suppressMessages( require(shiny) )
suppressMessages( require(htmltools) )
suppressMessages( require(htmlwidgets) )
suppressMessages( require(jsonlite) )
suppressMessages( require(maptools) )
cntry <- map("world2Hires",fill=F,plot=F)$names[1:100]
cntry <- cntry[order(cntry)]
getBounds <- function(vec=NULL)
{
    lng1 <- rep(0,length(vec))
    lat1 <- rep(0,length(vec))
    lng2 <- rep(0,length(vec))
    lat2 <- rep(0,length(vec))
    for (i in 1:length(vec))
    {
        lat1[i] <- map("world2Hires",fill=F,region=vec[i],plot=F)$range[3] %>% round(5)
        lng2[i] <- map("world2Hires",fill=F,region=vec[i],plot=F)$range[2] %>% round(5)
        lat2[i] <- map("world2Hires",fill=F,region=vec[i],plot=F)$range[4] %>% round(5)
        lng2[i] <- map("world2Hires",fill=F,region=vec[i],plot=F)$range[1] %>% round(5)
    }
    cbind(lng1,lat1,lng2,lat2)
}

location <- getBounds(vec=cntry)
df1 <- data.frame(cntry,location)
Column {.sidebar}
--------------------------------------------------

### Epicenter Region
# https://community.rstudio.com/t/rstudio-connect-interactive-markdown-with-shiny-error-path-for-html-dependency-not-provided/7263/11
selectInput("loc",
        label="Select Region:",
        selectize=FALSE,        
        choices=df1[,1],
        selected=df1[19,1])
Column
--------------------------------------------------

### COVID-19 Epicenters
    # base layer
output$myMap <- renderLeaflet({
    myMap <- leaflet() %>% addTiles() %>%
    # add tile theme layer
    addProviderTiles(providers$CartoDB.Positron) %>%
    # add bounds
    fitBounds(lng1=map("world2Hires",fill=F,region=input$loc,plot=F)$range[1],
          lat1=map("world2Hires",fill=F,region=input$loc,plot=F)$range[3],
          lng2=map("world2Hires",fill=F,region=input$loc,plot=F)$range[2],
          lat2=map("world2Hires",fill=F,region=input$loc,plot=F)$range[4])
    return(myMap)
})

leafletOutput("myMap")

0 个答案:

没有答案