在使用Shiny构建我的第一个非常基本的Web应用程序时,我处于最后也是最关键的一步,而我在努力完成我认为应该是非常基本的任务。该应用的想法是让应用观察两个输入,然后基于两个输入从数据框中输出单个值。
示例代码使其非常清楚。
Server
DF X Y Z
1 A B C
2 C D E
3 F G H
UI
InputA: Row - 2
InputB: Column - Z
Output: E
此刻,我遇到了麻烦,因为我没有收到错误。该应用程序启动时没有问题,并且此选项卡上的所有其他小部件以及其他小部件都在工作。目前,文本框什么也没做。一个人可以在前两个中键入值,但随后不输出任何内容,也不提供错误消息。之所以令人沮丧,是因为尽管我缺少一些非常明显的东西。
这是实际的代码 服务器
server <- function(input, output, session) {
#Download Data and create data table.
rlwin <- read.csv("rlwinClean.csv")
...
observe({
Lead <- as.character(input$Lead)
CalcTime <- as.character(input$CalcTime)
addtext <- paste(rlwin[rlwin$Time == CalcTime, Lead])
updateTextInput(session,"winProbability", value=addtext)
})
}
...
用户界面:
ui <- (navbarPage(theme=shinytheme("sandstone"), title=h3("Rocket League Win Probability"),
#Tab1 ----
tabPanel("Win Probability Model",
#The Plot
plotOutput("modPlot", height="800px"),
#Probabililty Calculator
h4("Win Probability Calculator"),
textInput(inputId="CalcTime", label="Enter Time on Clock Remaining in Game", placeholder="0:00 to 5:00"),
textInput(inputId="Lead", label="Enter Lead or Deficit", placeholder="-4 to 4"),
br(""),
textInput(inputId="winProbability",label="Win Probability",placeholder="50%"),
br("")
),
...
编辑:找到了答案。可能有点长了
服务器
...
observeEvent(input$runCalc,{
time <- subset(react, GameClock == input$CalcTime)
all <- subset(time, select = input$Lead)
val <- paste(all)
updateTextInput(session, inputId = "probText", value = val)
})
....
用户界面实际上保持不变
答案 0 :(得分:0)
尝试分配观察者
my_observer <- observe({ .... })
答案 1 :(得分:0)
以下代码对我有用。请注意,我已对您的某些输入进行了重命名,因为很难跟踪应该在何处使用您的输入。
发生错误是因为原始代码中的addText
为空(逻辑条件未返回任何记录)。您将在下面看到我如何将输出打印到控制台以对其进行调试。
library(shiny)
ui <- (navbarPage( title=h3("Rocket League Win Probability"),
#Tab1 ----
tabPanel("Win Probability Model",
textInput(inputId="column_name", label="Column name", placeholder="X, Y or Z"),
textInput(inputId="row_number", label="Row number", placeholder="1, 2 or 3"),
br(""),
textInput(inputId="winProbability",label="Win Probability",placeholder="50%"),
br("")
)
))
server <- function(input, output, session) {
#Download Data and create data table.
rlwin = data.frame(DF = c(1,2,3), X = c("A","B","C"), Y = c("B","D","G"), Z = c("C","E","H"))
observe({
col_name <- as.character(input$column_name)
row_num <- input$row_number
addtext <- paste(rlwin[row_num, names(rlwin) == col_name])
# print("debug print out")
# print(col_name)
# print(row_num)
# print(addtext)
updateTextInput(session,"winProbability", value=addtext)
})
}
shinyApp(ui, server)