R - 闪亮| cat中的错误(列表(...),文件,sep,fill,labels,append):参数1(类型' list')无法由cat' cat'

时间:2015-03-13 20:31:29

标签: r list shiny shiny-server

我正在尝试编写一个Shiny应用程序,需要在开始可视化之前先操作我的数据。我有三个输入来操纵数据。 1.频道 2.排除一个字 3.查找包含此词的所有评论

我能够完成前两个但是当使用grep()函数来查找包含某个单词的所有行时,我遇到了以下错误 “cat中的错误(列表(...),文件,sep,fill,labels,append):   参数1(类型'list')不能由'cat'“

处理

任何人都知道如何处理这个问题?究竟是什么导致了它?我认为是grep()函数使用列表来告诉我哪些行包含该单词。但是我不确定是否可以解决这个问题,并且花费了很多时间来处理这个问题

请在下面找到我的两段代码;

UI.r

fluidPage(

titlePanel("Groupon Word Cloud"),

sidebarLayout(

sidebarPanel(
  selectInput(    inputId   = "selection", 
                  label     = "Choose a Supply Channel",
                  choices   = c('All',
                              'G1',
                              'Getaways',
                              'Goods',
                              'Live',
                              'National',
                              'N/A',
                              'MM'),        
                  selected  = 'All'),
  hr(),
  textInput(      inputId   = "exclude", 
                  label     = "Exclude a word"),
  textInput(      inputId   = "drill", 
                  label     = "Drill down into a word"),
  submitButton(   text      = "Update"),
  hr(),
  dateRangeInput( inputId   = "date", 
                  label     = "Date Range",
                  start     = "2015-02-01", 
                  end       = NULL , 
                  min       = '2015-02-01',
                  max       = NULL,
                  format    = "yyyy-mm-dd", 
                  startview = 'month',
                  weekstart = 0,
                  language  = "en", 
                  separator = "to"),
  sliderInput(    inputId   = "freq",
                  label     ="Minimum Frequency:",
                  min       = 1,
                  max       = 50, 
                  value     = 15),
  sliderInput(    inputId   = "max",
                  label     = "Maximum Number of Words:",
                  min       = 1,  
                  max       = 300,  
                  value     = 100)),

# Show Word Cloud
mainPanel(
  tableOutput('table')
)

) )

server.r

    library(shiny)
    source('data/lappend.r')

    #Load and manipulate data on App opening
    survey_data   <- read.delim(file = "data/Survey_Monkey_3_1_2015.txt"
                            , header = TRUE
                            , sep = "|"
                            , quote = ""
                            , stringsAsFactors = FALSE)
    survey_data <- subset(survey_data, survey_data$Misc_Text_Feedback != '?')
    survey_data <- survey_data[,c(2,6)]

    stopWords     <- read.csv  (file = 'data/stop_words.csv')
    stopWords     <- as.character(stopWords[,2])

  shinyServer(
    function(input, output) {
    #Data subset based on Supply Channel Selection 
    data <- reactive({
      if (input$selection == 'All') { 
        if(input$drill==""){
          survey_data
        } else {
          drill <- survey_data
          drill <- grep(input$drill, drill$Misc_Text_Feedback, value = TRUE)
        }  
      } else { 
        if(input$drill==""){
          subset(survey_data, survey_data$Supply_Channel == input$selection )
        } else {
          drill <- subset(survey_data, survey_data$Supply_Channel == input$selection)
          drill <- grep(input$drill, drill$Misc_Text_Feedback)
        }  
      }  
    })
    stops <- reactive({
      stopWords <- lappend(stopWords, input$exclude)
      return(stopWords)
    })
    #Table
    output$table <- renderText({
      data <- data()
      head(data, n = 300)
    })
  })

非常感谢您提供的任何帮助或对我当前代码的评论。我还提供了一个函数,用于将单词追加到下面列出的列表中

Lappend

lappend <- function(lst, obj) {
  lst[[length(lst)+1]] <- obj
  return(lst)
}

数据头

我的数据的头部如下所示

  1. KEY ....... SUPPLYCHANNEL ...... MISCTEXTFEEDBACK
  2. 1234 ......商品..............'我的经历很棒'
  3. 1235 ...... N / A ..................'我的经历非常糟糕'
  4. 1236 ......国家...........'我订购了这个项目'
  5. 1237 ......商品..............'我得到了退款'
  6. 道歉上面的格式不佳。

5 个答案:

答案 0 :(得分:4)

根据我的经验,错误argument 1 (type 'list') cannot be handled by 'cat'来自于将列表传递给render ...()命令。我的猜测是你将一个列表传递给server.r。

底部的output$table <- renderText({

此外,我见过的renderText()的所有示例只呈现一行文字。如果你想渲染多行,请尝试renderUI(),它也可以处理某些类型的列表,例如Shiny自己的tagList()

答案 1 :(得分:3)

我今天遇到了这个错误。

解决方案:输出$ something语句末尾缺少})

编译时没有显示为错误,因此很难发现。

答案 2 :(得分:2)

唯一的问题是你使用renderText(),但你有多行输出。 您可以使用renderUI()代替

来解决此问题

答案 3 :(得分:2)

只是为了注册(也许对某人有用)。我遇到了同样的问题,对我来说解决方法是将var (mytime1, mytime2) = runTimes.Split(','); 更改为renderText

但在我的情况下,我试图总结renderPrint

答案 4 :(得分:1)

当您在服务器中创建renderText并填充一些 html 标记时会抛出此错误(例如:{{1} }),而不是一行标准文本。

删除标记,错误可能会消失。