我是新的閃亮(和任何Web應用程序的東西),但相當熟悉R.我試圖建立一個相當基本的頁面,在加載頁面之前運行一個API調用,根據響應獲取一些輸入,然後運行另一個API調用並進行一些分析。我在輸入時遇到問題。閃亮的服務器返回功能錯誤值
這裏是我的UI:
shinyUI(fluidPage(
# Application title
titlePanel("IGP Risk Analysis"),
sidebarLayout(
sidebarPanel(
selectInput("portfolio", "Underlying Portfolio:",
choices = portfolioList),
selectInput("portDate", "Portfolio Date:",
choices = "Pick a portfolio..."),
width = 2),
mainPanel(
tabsetPanel(type = "tabs",
tabPanel("Plot", plotOutput("plot")),
tabPanel("Summary", verbatimTextOutput("summary")),
tabPanel("Table", tableOutput("table"))
)
)
)
))
我的服務器代碼如下:
shinyServer(function(input, output, session) {
portfolioInput <- reactive({
temp <- setnames(sendRequest(theURL, myUN, myPW, action = "GetPortfolios"), "Available Portfolios")
portfolioList <- temp[!grepl("AAA|ZZZ",unlist(temp)),]
return(portfolioList)
})
observe({
portfolioDates <- setnames(sendRequest(theURL, myUN, myPW, action = "GetPortfolioDates",
portfolioName = input$portfolio, portfolioCurrency = "USD"),
"Available Dates")
updateSelectInput(session, "portDate",
choices = c("Pick One", portfolioDates),
selected = "Pick One")
})
})
這是工作,沒有錯誤或警告,但第一個輸入框顯示sendRequest將結果( )。它不會設置名稱或響應的子集。即 - 在第一selectInput箱我得到:
theResponse.ArrayOfString.string
AAA - IGP\\Diver\\20151007
AAA - IGP\\Diver\\TEST
REAL
BD
Bvdh
Cap
Cas
Diver
IGP Aggregate
ZZZ - Archive
ZZZ - Archive\\AAA - IGP
,我想:
Available Portfolios
REAL
BD
Bvdh
Cap
Cas
Diver
IGP Aggregate
這是沒有意義的我,因爲它似乎被忽略的代碼。
由於portfolioList是靜態的,在第一次加載頁面時只需要加載一次,所以我嘗試在服務器功能之外獲取列表。我想這會設置一個全局變量,然後我可以在用戶界面中引用。這沒有奏效。任何想法爲什麼這種方法不工作?
這是否與服務器功能中的「會話」有關?我有舊的會議運行嗎? '會議'是R會議嗎?當我在RStudio中重新啓動應用程序時它會重新啓動嗎?
您需要返回您portfolioList對象的反應功能。此外,我會建議使用renderUI動態用戶界面部分。 – Sebastian
感謝您的時間。我已經嘗試過,並沒有改變任何東西。此外,我嘗試使用renderUI,我無法讓它工作。 – lukehawk
這是您正在運行的確切代碼嗎?認爲這是一個草圖,你的閃亮環境應該完全不知道portfolioList,嘗試在ui.r中調用portfolioInput() - 但我不確定這會在你的ui.r中工作。我試圖一起拿東西.. – Sebastian