【问题标题】:Error : cannot coerce type 'environment' to vector of type 'character'错误:无法将类型“环境”强制转换为“字符”类型的向量
【发布时间】:2017-11-25 05:00:45
【问题描述】:

我正在用 R 开发一个 Shiny 应用程序来预测输入文本的下一个单词。每次我运行应用程序时都会收到此错误

收听http://127.0.0.1:5714 警告:as.character 中的错误:无法将类型“环境”强制转换为

的向量

输入“字符”

堆栈跟踪(最内层优先): 1:运行应用程序

错误:无法将“环境”类型强制转换为“字符”类型的向量

我已经尝试了所有我似乎无法理解的问题

    suppressWarnings(library(shiny))

    shinyUI(fluidPage(

    # Application title
    navbarPage("Coursera Word Predection Final Project",
         tabPanel("Home"),
         navbarMenu("Method",
                    tabPanel("Description", p("This app uses a ngram backoff 
    model to predict the next word in a sentence."))
                    )),

    # Sidebar layout
    sidebarLayout(

    sidebarPanel(
    textInput("sentence", "Continue the sentence here below", value = "this 
    is a result of the"),
   sliderInput("obs", "maximum predictions:",
              min = 0, max = 30, value = 10
   )

   ),

  mainPanel(
  h4("Sentence"),
  verbatimTextOutput("text"),

  h4("Prediction"),
  verbatimTextOutput("prediction")
  )
  )
  )
  )


 pred_words <- function(sentence, n = 10){
 sentence <- removeNumbers(sentence)
 sentence <- removePunctuation(sentence)
 sentence <- tolower(sentence)
 words <- unlist(strsplit(sentence, split = " " ))
 words <- tail(words, 5)
 word1 <- words[1];word2 <- words[2];word3 <- words[3];word4 <- 
 words[4];word5 <- words[5];
 datasub <- data.table()
 if (nrow(datasub)==0 & !is.na(word5)) {
  if(nrow(datasub) == 0) datasub <- subset(ngram6, w1==word1 & w2==word2 & 
  w3==word3 & w4==word4 & w5==word5)
  if(nrow(datasub) == 0) datasub <- subset(ngram5, w1==word2 & w2==word3 & 
  w3==word4 & w4==word5)
  if(nrow(datasub) == 0) datasub <- subset(ngram4, w1==word3 & w2==word4 & 
  w3==word5)
  if(nrow(datasub) == 0) datasub <- subset(ngram3, w1==word4 & w2==word5)
  if(nrow(datasub) == 0) datasub <- subset(ngram2, w1==word5)
   }

  if (nrow(datasub)==0 & !is.na(word4)) {
  if(nrow(datasub) == 0) datasub <- subset(ngram5, w1==word1 & w2==word2 & 
  w3==word3 & w4==word4)
  if(nrow(datasub) == 0) datasub <- subset(ngram4, w1==word2 & w2==word3 & 
  w3==word4)
  if(nrow(datasub) == 0) datasub <- subset(ngram3, w1==word3 & w2==word4)
  if(nrow(datasub) == 0) datasub <- subset(ngram2, w1==word4)
  }

  if (nrow(datasub)==0 & !is.na(word3)) {
  if(nrow(datasub) == 0) datasub <- subset(ngram4, w1==word1 & w2==word2 & 
  w3==word3)
  if(nrow(datasub) == 0) datasub <- subset(ngram3, w1==word2 & w2==word3)
  if(nrow(datasub) == 0) datasub <- subset(ngram2, w1==word3)
  }

  if (nrow(datasub)==0 & !is.na(word2)) {
  if(nrow(datasub) == 0) datasub <- subset(ngram3, w1==word1 & w2==word2)
  if(nrow(datasub) == 0) datasub <- subset(ngram2, w1==word2)
  }

  if (nrow(datasub)==0 & !is.na(word1)) {
  if(nrow(datasub) == 0) datasub <- subset(ngram2, w1==word1)
  if(nrow(datasub) == 0) datasub <- head(ngram1)
  }

  if(nrow(datasub) > 0){
  }

  }


  # Define server logic for the Word Prediction application
  shinyServer(function(input, output) {
reactive({
  pred_words(input$sentence, input$obs);
})
output$prediction <- renderPrint({
  ds <- data_prediction()
  if(nrow(ds)>0) {
    head(subset(ds, freq==max(ds$freq))[,ncol(ds)-1],3)
    cat( 
      paste( head(ds[,ncol(ds)-1]), collapse=', ' )
    )  
  }
})
})

 # Run the application 
 shinyApp(ui = shinyUI, server = shinyServer)

【问题讨论】:

    标签: r shiny shiny-server


    【解决方案1】:

    shinyUIshinyServer 是来自 Shiny 的函数。您想将您的实际 ui 和服务器功能传递给 shinyApp(),例如:

    library(shiny)
    
    ui <- fluidPage(
    
    )
    
    server <- function(input, output) {
    
    }
    
    shinyApp(ui = ui, server = server)
    

    【讨论】:

    • 非常感谢,它成功了。现在我只需要修复我得到的新错误。我真的很感激
    • 虽然这解决了这种特殊情况下的问题,但遇到类似情况的其他人可能希望确保命名空间已充分加载。当我使用@importFrom shiny shinyApp 而不是@import shiny 时遇到了类似的问题。
    【解决方案2】:

    错误:当我们在服务器函数中使用observe()而不是响应式时,最常见的是无法将类型“环境”强制转换为“字符”类型的向量

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多