我构建了一个闪亮的应用程序,它依赖于在启动时加载本地存储的CSV文件。当我在我的电脑上运行这个闪亮的应用程序时,无论是在RStudio窗口还是Google,应用程序都会加载和显示数据,没有问题。即使没有加载到R会话中的数据,情况也是如此。但是,在发布应用程序之后,主数据表在启动时或在单击submit按钮(试图刷新表)时不会显示。
这个问题始于我从使用began的数据表函数到使用DT的时候,为了能够使第一列中的名称充当链接,我开始使用DT。我目前正在开发一台64位的Macbook,运行小牛。今天刚更新了R和RStudio,同时进行故障排除。我也尝试过在运行Windows 8的计算机上发布数据,但该应用程序的发布版本中仍然没有显示数据表。
ui.r代码:
shinyUI(fluidPage(
titlePanel("Pinball Buyer's Guide"),
sidebarLayout(
sidebarPanel(
helpText("Whether you're looking for a great value on a machine to buy or just want to find a new table you'd
like to play, this guide will help you find a table based on your tastes. Use the sliders below to
assign a weight to each category of your table ranking score. The site will use that to generate
a score for each of the available tables and to determine how much bang for your buck each table
represents."),
sliderInput('rating',
label = 'Player Ratings',
value = 1, min = 0, max = 5, step = .25),
sliderInput('game',
label = 'Game Design',
value = 1, min = 0, max = 5, step = .25),
sliderInput('art',
label = 'Art',
value = 1, min = 0, max = 5, step = .25),
sliderInput('sound',
label = 'Sound',
value = 1, min = 0, max = 5, step = .25),
sliderInput('other',
label = 'Other Game Aspects',
value = 1, min = 0, max = 5, step = .25),
sliderInput('staff',
label = 'Pinside Staff Ratings',
value = 1, min = 0, max = 5, step = .25),
helpText("Excluding the production year in the pricing model will likely push older tables
to the top of the bargain rankings. If you'd prefer a newer machine, leave this checked."
),
checkboxInput('year',
label = 'Include Machine Year in Price Model?',
value = TRUE),
submitButton('Submit')
),
mainPanel(
tabsetPanel(
tabPanel("Main",
br(),
textOutput('topTableExplainer'),
br(),
dataTableOutput('topTables'),
br()
),
tabPanel("About This App",
tags$body(textOutput('summary')),
br()
)
)
)
)
))R代码:
library(DT)
pinData <- read.csv('./Data/pinDataMassaged.csv', header=TRUE, stringsAsFactors = FALSE)
userTable <- data.frame()
shinyServer(function(input, output){
getUserFrame <- reactive({
userScore <- pinData$rating * input$rating + pinData$gameDesign * input$game + pinData$artwork * input$art +
pinData$sound * input$sound + pinData$otherRating * input$other + pinData$staffRating * input$staff
userTable <- data.frame()
userTable <- data.frame(pinData, userScore)
if (input$year == 'TRUE'){
userModel <- lm(avgValue ~ userScore + age, data = userTable)
} else{
userModel <- lm(avgValue ~ userScore, data = userTable)
}
pricePredict <- predict(userModel, userTable)
pinBargain <- round(pricePredict - userTable$avgValue)
userTable <- data.frame(userTable, pinBargain)
userTable <- userTable[,c('nameLink', 'makeAndYear', 'userScore', 'estimatedValue', 'pinBargain')]
})
output$topTables <- DT::renderDataTable({
DT::datatable(data = getUserFrame(),
colnames = c('Name', 'Make & Year', 'Your Score', 'Market Price', 'Bargain Amount($)'),
escape = 0, rownames = FALSE,
options = list(pageLength = 20, order = list(2,'desc')))
})
output$topTableExplainer <- renderText({
"The following table presents the top-scoring games based on your criteria. The Bargain Amount column is how much
of a value buy this game represents when compared to a pricing model based on your criteria. The higher the better.
Negative numbers represent games that are overpriced according to the pricing model.
Click on the Bargain Amount column to sort by best value. These tables would
be a great, low-cost way to start your collection."
})
output$summary <- renderText({
" This app was born after I read way too many 'What should I buy?' discussions on pinball forums. I figured that people
would appreciate the ability to find great tables based on what they consider most important in a game. As someone longing
to buy his first pinball machine, I also knew that people would be looking for value tables that they could get a lot of
game time out of. The data comes from the Pinside top ~250 tables. Some had to be excluded because pricing information
wasn't available."
})
}
)当我发布应用程序时,我不会收到任何错误或警告信息,并且在应用程序日志部分没有任何日志。不知道该在哪里转弯。我真的很感谢你的帮助。
发布于 2016-04-11 16:02:28
我解决了这个问题。我需要将ui.r中的dataTableOutput更改为DT::dataTableOutput。如果它在R中和本地浏览器中正确运行,我就会觉得这是一个数据加载问题,而显示/输出是错误的。MLavoie,谢谢您在提交时清理代码。
https://stackoverflow.com/questions/36523350
复制相似问题