首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Shiny R:比较字符串中的::NA/NaN参数出错

Shiny R:比较字符串中的::NA/NaN参数出错
EN

Stack Overflow用户
提问于 2019-02-21 00:59:02
回答 1查看 484关注 0票数 0

因此,我正在编写一个应用程序,让用户输入一些涉及矩阵的基本运算。在一个部分,他们被要求“返回”整个矩阵,就像他们在基数R中一样,对于这个矩阵,他们可以“调用”具有1:5,1:5行和列的矩阵,或者简单地输入矩阵的名称(例如my.matrix)。但是,我无法运行第二部分,因为应用程序将崩溃并返回以下错误: Error in ::NA/NaN参数。我在服务器中包含了此特定部分的代码段:

代码语言:javascript
复制
 observeEvent( input$go6, {
  sixthinput<- as.numeric(str_extract_all(input$six, "[0-9]+")[[1]])
  string6 <- str_extract(input$six, "my.matrix")
  sixth.list <- my.matrix[sixthinput[1]:sixthinput[2],sixthinput[3]:sixthinput[4]]

  isolate({
    buttonValue$go1 = FALSE
    buttonValue$go2 = FALSE
    buttonValue$go3 = FALSE
    buttonValue$go4 = FALSE
    buttonValue$go5 = FALSE
    buttonValue$go6 = TRUE
    buttonValue$go7 = FALSE

  })
  comparestring <- "my.matrix"

  if (isTRUE(identical(sixth.list, my.matrix)) & buttonValue$go6) {
    output$display <- renderText({
      paste(c("The matrix you extracted contains:"))
    })
    output$displayMat <- renderTable(
      sixth.list
    )
    output$display2 <- renderText({
      print("Correct!")
    })
  } else if(isTRUE(identical(string6, comparestring)) & buttonValue$go6) {
    output$display <- renderText({
      paste(c("The matrix you extracted contains:"))
    })
    output$displayMat <- renderTable(
      my.matrix
    )

    output$display2 <- renderText({
      print("Correct!")
    })
  } else {  

    output$display <- renderText({
      paste(c("The matrix you extracted contains:"))
    })

    output$displayMat <- renderTable(
      sixth.list
    )

    output$display2 <- renderText({
      print("Incorrect")
    })
  }

})

我确信它与变量"string6“、"comparestring”和/或我在if循环中比较它们的部分有关,但我不确定错误的确切位置/错误程度,除了NA。任何澄清都是非常感谢的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-21 07:05:53

问题出在以下几行中:

代码语言:javascript
复制
sixthinput<- as.numeric(str_extract_all(input$six, "[0-9]+")[[1]])
string6 <- str_extract(input$six, "my.matrix")
sixth.list <- my.matrix[sixthinput[1]:sixthinput[2],sixthinput[3]:sixthinput[4]]

当用户输入不带子集运算符([)的my.matrix时,sixthinput的值将为numeric(0),因为没有匹配的数字。sixthinput[1]的值将是NA,因此您不能通过NA来设置my.matrix的子集。避免错误的最简单方法是检查该length(sixthinput) == 4,如果不是,则避免设置my.matrix子集。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54791675

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档