Я создаю блестящее приложение, использующее 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, связанные с этой проблемой, и могу подтвердить, что некоторые из распространенных причин здесь не так:
- У меня есть полный набор данных. final.csv отфильтровал значения NA (с помощью функции na.omit).
- Я удалил каждый фильтр один за другим, и ошибка все еще сохраняется. поэтому я не верю, что это связано с проблемами именования фильтров или логики.
- Я удалил всплывающую подсказку, и ошибка все еще сохраняется.
- Ошибка НЕ возникает вне блестящего, т.е. когда я запускаю приложение локально в RStudio.
Поэтому я подозреваю, что есть какая-то проблема с одной из функций, которые R использует для рендеринга HTML, что, в свою очередь, наводит меня на мысль, что в ui.R есть какая-то проблема. Но кроме этого я расстроен и застрял..... есть идеи?
final <- read.csv
выводом образца ваших данных? - person Chris   schedule 25.09.2015