使用Shiny App从数据框中选择

时间:2016-02-03 00:33:06

标签: r dataframe shiny

我想使用selectInput从数据框的2列中选择值。我使用名为KenPomeroyAnalysis.R的文件创建数据框。我将数据框存储在一个名为pom。

的变量中
library(XML)
library(dplyr)
# Parse Kenpom Data -------------------------------------------------------
pom <- "http://kenpom.com/" %>%
  readHTMLTable() %>%
  data.frame()

#columns to keep
vars <- c(2,5,6,8,10)
pom <- pom[,vars]
#change name of columns
names(pom) <- c("Team","Pyth","AdjO","AdjD","AdjT")

#make rows numeric
pom <- data.frame(pom$Team, sapply(pom[,c("Pyth","AdjO","AdjD","AdjT")], function(x) as.numeric(as.character(x))))
names(pom)[1] <- "Team"

#Delete rows with NAs
pom <- na.omit(pom)

#remove everything but the data set
rm(list=setdiff(ls(), "pom"))

我想创建2个不同的selectInput框来选择pom $ Team。第一个selectInput用于选择&#34; home_team&#34;另一个用于选择&#34; away_team&#34;。

library(shiny)

#Define UI for application
shinyUI(fluidPage(

  #Application Title
  titlePanel("Ken Pomeroy Single Game Predictions"),

  fluidRow(

    selectInput("home_team",label="Home Team", choices=pom$Team),

    selectInput("away_team",label="Away Team", choices=pom$Team)

    ),

  mainPanel(

    textOutput("text1")

    )

  ))

我的server.R文件是我尝试运行KenPomeroyAnalysis.R文件的地方,因此我可以让pom数据框与之交互。

library(shiny)
source("KenPomeroyAnalysis.R")


shinyServer(function(input, output){

  output$text1 <- renderText({
    paste(input$home_team,"@",input$away_team)
  })

})

然而,当我尝试运行App时,我收到一条错误说:

ERROR: object 'pom' not found

这使得看起来server.R文件不是首先从KenPomeroyAnalysis.R文件创建数据框pom。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

您可以创建一个更全局的脚本.R可以在其中获取文件&#34; KenPomeroyAnalysis.R&#34;,这样它可以被server.R和ui.R访问。在您的情况下,它只能由server.R。

访问