2013-11-15 48 views
3

我是Shiny的新手,並試圖爲我構建的功能構建更易於訪問的輸入和輸出。我把這個交給那些不運行R的人,所以試圖在後臺創建一些運行我的函數的東西,然後吐出答案。閃亮 - 將文本輸入轉換爲輔助功能

我遇到了一些麻煩,不幸的是我處理了一堆錯誤。然而,這裏是我更尖銳的問題:

我想要運行的實際功能需要一個名稱(引用爲「Last,First」)和一個數字。

PredH("Last,First",650) 

所以我想一個閃亮的應用程序,它需要一個名稱輸入,輸入的號碼是然後運行該程序,然後吐出背出一個數據表,我的答案。所以有幾個問題。

如何獲得它在正確的形式輸入到我的公式在服務器端腳本,我需要返回它的功能,因此它可以訪問使用函數$表類型訪問? (現在我只是在控制檯中使用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) 


}) 

回答

3

我不是很確定我理解你的問題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') 
+0

感謝您的回答,它一直非常有幫助。儘管問題很快。我試圖將這些輸入傳遞到另一個將存在於服務器端的函數。假設我的功能是這樣的: – BaseballR

+0

' name = input [1,2] PAIP = input [2,2] 測試< - function(name,PAIP){0} = paste(name,PAIP) 回報(一) }' ,然後要輸出回到UI等等,然後做一些事情,如: '輸出$名稱= renderText(測試$一)' 是,你將如何得到的東西你功能? 謝謝!對不起,這個令人困惑的問題! – BaseballR

+0

我做這種類型的事情,總是回來的類型閉合對象不子集,我無法找到任何具體到閃亮的問題的答案。 – BaseballR