2015-05-28 8 views
3

Я пытаюсь создать R Shiny приложение и столкнулся ошибки:server.R undefined columns?

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 
    }) 
}) 

Любые мысли?

+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)

Использование второго подхода , вот полный код.

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, и он работает

+0

спасибо большое за ответ! моя ошибка, selectInput предназначался для имен столбцов (символов), я забыл изменить его. Я просто изменил код из числовых значений имен столбцов: selectInput ("седловины", "Select Column", ВЫБОР = с ("ID", "Имя"), выбран = "идентификатор") и я все равно получите ту же ошибку. Может быть, мы читаем в файле в разных местах? мой файл - это простой символ csv-файла – eyio

+0

Я просто попробовал 'write.csv (iris," file.csv ")', а затем запустил мой код, и он все еще работал. Посмотрите, работает ли ваш код при использовании набора данных диафрагмы –

+0

hm. Он также работает для меня сейчас после того, как я деактивирую набор данных. Я изменю сообщение об ошибке на тот, который вы получили, поскольку тот, который я получал, кажется, не воспроизводится. спасибо за решение этого для меня! – eyio