闪亮 - 将文本输入转换为辅助功能

时间:2013-11-15 00:13:59

标签: r function shiny

我是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)


})

1 个答案:

答案 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')