Аргумент: длина нуля в приложении блестящий + ggvis

Я создаю блестящее приложение, использующее dplyr и ggvis. Я могу запустить приложение, но получаю сообщение об ошибке:

Ошибка в if (tag$name %in% c("area", "base", "br", "col", "command", "embed", : аргумент имеет нулевую длину

Вот мой ui.R:

`library(shiny)
library("ggvis")

shinyUI(fluidPage( 

titlePanel("Visual Stock Screener"),    

sidebarLayout(
sidebarPanel(
  numericInput("MinMarketCap",
              "Min Market Cap (in Tens of Millions)",
              value = 10,
              min = 1,
              max = 60000),
  numericInput("MaxMarketCap",
               "Max Market Cap (in Tens of Millions)",
               value =  5000,
               min = 1,
               max = 60000),
  numericInput("MinDivYield",
              "Min Div Yield:",
              value = 0.04,
              min = 0,
              max = 1),                  

  numericInput("MaxDivYield",
              "Max Div Yield:",
              value = 0.14,
              min = 0,
              max = 1),

  numericInput("MinPayoutRatio",
               "Min Payout Ratio:",
               value = 0,
               min = 0),
  numericInput("MaxPayoutRatio",
               "Max Payout Ratio:",
               value = 0.4,
               min = 0),      

  numericInput("MinPriceBook",
               "Min Price/Book Ratio:",
               value = 0,
               min = 0),

  numericInput("MaxPriceBook",
               "Max Price/Book Ratio:",
               value = 3,
               min = 0),

  numericInput("MinPriceSales",
               "Min Price/Sales Ratio:",
               value = 0,
               min = 0),
  numericInput("MaxPriceSales",
               "Max Price/Sales Ratio:",
               value = 7,
               min = 0)      

  ),

mainPanel(
  tabsetPanel(type="tab",
              tabPanel("Plot",ggvisOutput("visplot"),uiOutput("visplot_ui"))

              )


)
)))`

Вот мой server.R:

`library(shiny)
library("ggvis")
library(dplyr)

#import file created by screener.R

final <- read.csv("final.csv") 

# Define server logic required to draw a histogram

shinyServer(function(input, output) {



output$visplot_ui <- renderUI({

allviz <- na.omit(final)
allviz <- filter(allviz, DivYield >= input$MinDivYield)
allviz <- filter(allviz, DivYield <= input$MaxDivYield)
allviz <- filter(allviz, PAYOUTRATIO >= input$MinPayoutRatio)
allviz <- filter(allviz, PAYOUTRATIO <= input$MaxPayoutRatio)
allviz <- filter(allviz, PriceBook >= input$MinPriceBook)
allviz <- filter(allviz, PriceBook <= input$MaxPriceBook)
allviz <- filter(allviz, PriceSales >= input$MinPriceSales)
allviz <- filter(allviz, PriceSales <= input$MaxPriceSales)
allviz <- filter(allviz, MarketCapinMil >= input$MinMarketCap)
allviz <- filter(allviz, MarketCapinMil <= input$MaxMarketCap)

allviz$id <- 1:nrow(allviz)

allviztip <- function(x) { if(is.null(x))return(NULL) 
                           row <- allviz[allviz$id == x$id,c(1,4,7,8,9,10)]
                           paste0(names(row),":",format(row),"  </div>",collapse="<br />")}

allviz[1:20,] %>% ggvis(x=~PriceBook,y=~DivYield,key:=~id,size=~MarketCap,shape=~PayoutCat,fill=~PriceSales) %>%
  layer_points() %>% add_tooltip(allviztip,"hover")  %>% bind_shiny("visplot","visplot_ui") 

})

})

` 

Я рассмотрел предыдущие вопросы stackoverflow, связанные с этой проблемой, и могу подтвердить, что некоторые из распространенных причин здесь не так:

  1. У меня есть полный набор данных. final.csv отфильтровал значения NA (с помощью функции na.omit).
  2. Я удалил каждый фильтр один за другим, и ошибка все еще сохраняется. поэтому я не верю, что это связано с проблемами именования фильтров или логики.
  3. Я удалил всплывающую подсказку, и ошибка все еще сохраняется.
  4. Ошибка НЕ ​​возникает вне блестящего, т.е. когда я запускаю приложение локально в RStudio.

Поэтому я подозреваю, что есть какая-то проблема с одной из функций, которые R использует для рендеринга HTML, что, в свою очередь, наводит меня на мысль, что в ui.R есть какая-то проблема. Но кроме этого я расстроен и застрял..... есть идеи?


person simitpatel    schedule 23.09.2015    source источник
comment
можете ли вы заменить свою строку final <- read.csv выводом образца ваших данных?   -  person Chris    schedule 25.09.2015


Ответы (1)


У меня была точно такая же ошибка, хотя я вообще не использовал ggvis. Я искал общие черты между вашим кодом и моим, которые генерируют ту же ошибку. Я думаю, проблема в том, что вы используете динамический интерфейс с uiOutput, и ваш renderUI(), похоже, не устанавливает никаких выходных элементов. Я не понял, какова роль shiny_bind(), но вы можете просто попробовать, добавив простой вывод html, как p("this is a test") в конце вашего renderUI().

person OAA    schedule 01.12.2015