server.R undefined columns?

时间:2015-05-28 00:48:38

标签: r shiny-server shiny

我试图创建一个R Shiny应用程序并遇到错误:

Error in `[.data.frame`(dataset.temp, , input$col) : 
  undefined columns selected

我不确定导致这种情况的原因,希望有人可以帮我解决这个问题。这是一个示例代码:

ui.R

shinyUI(fluidPage(
  titlePanel("Data"),
  sidebarLayout(
    sidebarPanel(
      textInput("from","Missing",
                value="Enter characters"),
      textInput("to","Missing",
                value="Enter characters"),
      selectInput("col","Select Column",
                  choices = c(1:6),
                  selected=1)),
    mainPanel(
      tableOutput('contents')
    )
  )
))

server.R

library(DT)
file <- read.csv("file.csv")
shinyServer(function(input, output) {
dataset.temp <- file
output$contents <- renderTable({
dataset.temp[,input$col] <- gsub(input$from,input$to,dataset.temp[,input$col])
    dataset.temp
  })
})

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我遇到了与运行代码不同的错误:

Error in `[.data.frame`(dataset.temp, , input$col) : 
  undefined columns selected

原因(至少是我的错误)是input$col是一个字符串,你将其视为一个整数。有两种可能的解决方法:

  1. 将您的selectInput更改为numericInput,这意味着现在input$col会返回一个整数,或
  2. input$col手动转换为col <- as.integer(input$col)
  3. 的整数

    使用第二种方法,这里是完整的代码。

    runApp(shinyApp(
      ui = fluidPage(
        titlePanel("Data"),
        sidebarLayout(
          sidebarPanel(
            textInput("from","Missing",
                      value="Enter characters"),
            textInput("to","Missing",
                      value="Enter characters"),
            selectInput("col","Select Column",
                        choices = c(1:6),
                        selected=1)),
          mainPanel(
            tableOutput('contents')
          )
        )
      ),
      server = function(input, output) {
        dataset.temp <- file
        output$contents <- renderTable({
            col <- as.integer(input$col)
            dataset.temp[,col] <- gsub(input$from, input$to,dataset.temp[,col])
          dataset.temp
        })
      }
    
    ))
    

    我不知道您正在使用哪个文件,因此我只使用了自己的csv文件并且可以正常使用