我是Shiny的新手,并试图为我构建的函数构建更易于访问的输入和输出。我把这个给那些没有运行R的人,所以试图在后台运行我的功能,然后吐出答案。
我遇到一些麻烦,不幸地处理了一堆错误。但是,这是我更尖锐的问题:
我想要运行的实际函数采用名称(引用为“Last,First”)和数字。
PredH("Last,First",650)
所以我想要一个闪亮的应用程序,它接受一个名称输入和一个数字输入,然后运行该程序,然后用我的答案吐出一个数据表。所以有几个问题。
如何以正确的形式将其输入到服务器端脚本中的等式中,是否需要在函数中返回它以便可以使用函数$ table type access访问它? (现在我只是在控制台中使用cat()函数进行打印,但是知道这可能不适用于这种类型的应用程序。
我想返回一个可以在PredH14 $表中获取的数据帧。我该如何建造闪亮的东西?
到目前为止,这是我的代码:
UI:
library(shiny)
shinyUI(pageWithSidebar(
# Application title
headerPanel("Miles Per Gallon"),
# Sidebar with controls to select the variable to plot against mpg
# and to specify whether outliers should be included
sidebarPanel(
textInput("playername", "Player Name (Last,First):", "Patch,Trevor"),
radioButtons("type", "Type:",
list("Pitcher" = "P",
"Hitter" = "H"
)),
numericInput("PAIP", "PA/IP:", 550),
submitButton("Run Comparables")
),
mainPanel(
textOutput("name")
)
服务器:
library(shiny)
shinyServer(function(input, output) {
sliderValues <- reactive({
data.frame(
Name = c("name", "PA"),
Value = c(as.character(playername),
PAIP),
stringsAsFactors=FALSE)
})
name=input[1,2]
PAIP=input[2,2]
testing <- function(name,PAIP){
a=paste(name,PAIP)
return(a) }
output$name=renderText(testing$a)
})
答案 0 :(得分:4)
我不太确定我100%理解你的问题,但我清楚地看到你想知道如何将UI的输入传递到服务器中,也许,反之亦然。
在您的服务器代码中,显然您没有从UI获得任何输入。基本上,您已在ui.R
中创建了三个输入变量:
1. input$playername
2. input$type
3. input$PAIP
一个输出:
1. output$name
只是让您知道,每次输入输入时都会调用函数sliderValues <- reactive(..)
...就像人们点击下拉列表或人们修改文本框中的单词一样。
您甚至可以在没有submit button
的情况下开始使用。但是提交按钮的存在实际上使一切变得更容易。 Create a submit button for an input form. Forms that include a submit button do not automatically update their outputs when inputs change, rather they wait until the user explicitly clicks the submit button.
所以你可以用类似的方式放置你的代码:
# server.R
library(shiny)
shinyServer(function(input, output) {
sliderValues <- reactive({
result <- ... input$playername ... input$type ... input$PAIP
return(result)
})
output$name <- renderPlot/renderText (... sliderValues...)
})
# ui.R
library(shiny)
shinyUI(pageWithSidebar(
headerPanel("Miles Per Gallon"),
sidebarPanel(
textInput("playername" ... ),
radioButtons("type" ... ),
numericInput("PAIP" ... ),
submitButton("...")
),
mainPanel(
textOutput/plotOutput...("name")
)
))
最后,查看可能是您想要的闪亮示例。
library(shiny)
runExample('07_widgets')