Я строю блестящее приложение, которое использует dplyr и ggvis. Я могу запустить приложение, хотя появляется сообщение об ошибке:«Аргумент - длина ноль» на блестящем + ggvis app
Ошибка в if (тег $ name% in% c ("area", "base", "br", "col », "команда", "врезать",: аргумент длины нулевой
Вот мой 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' ссылкой на образец данных? – Chris