R 放大时不渲染有光泽的传单贴图;保持静止

R 放大时不渲染有光泽的传单贴图;保持静止,r,shiny,leaflet,R,Shiny,Leaflet,如上所述,我使用的是闪亮的仪表板。放大时不渲染传单贴图。这是密码。它正在绘制给定纬度上的标记,long。放大时,它不工作。并且看起来是静态的,放大时不进行渲染。需要尽快提供帮助 服务器.R mapPlot <- function(searchTerm, maxTweets, lang, lat, long, rad){ mapTweets <- searchTwitter(searchString = searchTerm, n = maxTweets, lang =

如上所述,我使用的是闪亮的仪表板。放大时不渲染传单贴图。这是密码。它正在绘制给定纬度上的标记,long。放大时,它不工作。并且看起来是静态的,放大时不进行渲染。需要尽快提供帮助

服务器.R

 mapPlot <- function(searchTerm, maxTweets, lang, lat, long, rad){


    mapTweets <- searchTwitter(searchString =  searchTerm, n = maxTweets, lang = "en", geocode = paste(lat,long,paste0(rad, "mi"),sep=","))

    mapTweets.df <- twListToDF(mapTweets)

    return(mapTweets.df)
  }

  entity13 <- eventReactive(input$mapit,{

    progress <- shiny::Progress$new(session, min=1, max=15)
    on.exit(progress$close())

    progress$set(message = 'Rendering the leaflet map to visualize')

    for (i in 1:15) {
      progress$set(value = i)
      Sys.sleep(0.5)
    }

    print("Calling..")
    entity13 <- mapPlot(input$k, input$n, lang = "en", input$lat, input$long, input$rad)
    entity13
      })


  output$mymap <- renderLeaflet({

    m <- leaflet(entity13()) %>% addTiles() %>%

    addMarkers(entity13()$longitude, entity13()$latitude, popup = entity13()$screenName) 

    m %>% setView(entity13()$longitude, entity13()$latitude, zoom = 4)

    m
})

我认为是您的lat/long列中的
NA
s导致了问题。打印前尝试删除这些选项-请参见
输出$mymap
中的我的行。请注意,twitter不会自动为其所有推文包含地理代码,有时它们是空白/NA

下面是一个您可以运行的示例(使用您自己的
twitteR
授权密钥等)


请注意,在您的问题中,您应该使其具有可复制性,以便有人可以复制和粘贴您的代码并运行,而无需对您的意思进行重大编辑或猜测


库(闪亮)
图书馆(shinydashboard)
图书馆(单张)
图书馆(推特)

它工作了!你教我的努力是巨大的。我学到了宝贵的一课。非常感谢。我知道twitter搜索API会返回一些带有NA的推文。但是我没有想到我应该从返回的结果中删除NA。非常感谢您的及时帮助,我将接受您的建议,以可复制的方式发布代码@SolomonAathiRaj-不客气-很高兴我能帮上忙。
    column(width = 9,
   box(width = NULL, solidHeader = TRUE,
     leafletOutput("mymap", height = 500)
             ))
library(shiny)
library(shinydashboard)
library(leaflet)
library(twitteR)

ui <- dashboardPage(
  dashboardHeader(),
  dashboardSidebar(),
  dashboardBody(column(width = 9,
                       box(width = NULL, solidHeader = TRUE,
                           leafletOutput("mymap", height = 500)
                       )))
)

server <- shinyServer(function(input, output) {

  # consumerKey <- "...xxx..."
  # consumerSecret <- "...xxx..."
  # accessToken <- "...xxx..."
  # accessSecret <- "...xxx..."

  searchTerm <- "twitter"
  maxTweets <- 50
  lat <- -37.8278185
  long <- 144.9666907
  rad <- 100

  mapPlot <- function(searchTerm, maxTweets, lang, lat, long, rad){

    # setup_twitter_oauth(consumer_key = consumerKey, consumer_secret = consumerSecret,
    #                     access_token = accessToken, access_secret = accessSecret)

    mapTweets <- searchTwitteR(searchString =  searchTerm, 
                               n = maxTweets, 
                               lang = "en", 
                               geocode = paste(lat, long, paste0(rad, "mi"),sep=","))

    mapTweets.df <- twListToDF(mapTweets)

    return(mapTweets.df)
  }

  output$mymap <- renderLeaflet({

    entity13 <- mapPlot(searchTerm, maxTweets, lang = "en", lat, long, rad)
    ## Remove NAs
    entity13 <- entity13[!is.na(entity13$longitude), ]

    leaflet() %>% 
      addTiles() %>%
      addMarkers(data = entity13, lng = entity13$longitude, lat = entity13$latitude, popup = entity13$screenName) %>%
      setView(lng = long, lat = lat, zoom = 4)

  })
})

shinyApp(ui = ui, server = server)
df <- structure(list(longitude = c("145.21366882", "144.97520704", 
NA, NA, "144.929263"), latitude = c("-37.951828", "-37.7963", 
NA, NA, "-37.78712")), .Names = c("longitude", "latitude"), row.names = c(1L, 
2L, 5L, 6L, 7L), class = "data.frame")

## rows 5 & 6 have NA
df
#      longitude   latitude
# 1 145.21366882 -37.951828
# 2 144.97520704   -37.7963
# 5         <NA>       <NA>
# 6         <NA>       <NA>
# 7   144.929263  -37.78712

lat <- -37.8278185
long <- 144.9666907

## plotting all rows - zoom doesn't work and only first two markers shown
leaflet(data = df) %>% 
  addTiles() %>%
  addMarkers(lng = ~longitude, lat = ~latitude) %>%
  setView(lng = long, lat = lat, zoom = 4)


## only include non-NA rows - works as desired
leaflet(data = df[c(1,2,5),]) %>% 
  addTiles() %>%
  addMarkers(lng = ~longitude, lat = ~latitude) %>%
  setView(lng = long, lat = lat, zoom = 4)