【问题标题】:output computation in R using shiny [duplicate]使用闪亮的R中的输出计算[重复]
【发布时间】:2016-01-27 11:21:45
【问题描述】:

我正在尝试使用 Shiny 的用户界面在不同的基因(字符串)中找到“GC”的模式。我正在使用 R 的 grep 命令来查找模式,但我无法获得正确的输出。下面是UI.R的代码

  library(shiny)
setwd("C:/Users/ishaan/Documents/aaa")
shinyUI(fluidPage(

  # Copy the line below to make a select box 
  selectInput("select", label = h3("Select Human Gene Sequence"), 
              choices = list("CD83" = "UGGGUGAUUACAUAAUCUGACAAAUAAAAAAAUCCCGACUUUGGGAUGAGUGCUAGGAUGUUGUAAA"
                             , "SEC23A" = "UUUCACUGU"
                             , "ANKFY1" = "AAGUUUGACUAUAUGUGUAAAGGGACUAAAUAUUUUUGCAACAGCC"
                             ,"ENST00000250457"="ACUUGUUGAAUAAACUCAGUCUCC"
                             ), 
              selected = "UGGGUGAUUACAUAAUCUGACAAAUAAAAAAAUCCCGACUUUGGGAUGAGUGCUAGGAUGUUGUAAA"),

  hr(),
  fluidRow(column(5, verbatimTextOutput("value")),column(5, verbatimTextOutput("value2")))


))

服务器.R

library(shiny)
setwd("C:/Users/ishaan/Documents/aaa")
shinyServer(function(input , output) {
  strings=input$select

  # You can access the value of the widget with input$select, e.g.
  output$value <- renderPrint({ input$select })

  output$value2 <- renderPrint({ grep("*gc*",input$value })


})

【问题讨论】:

  • grep 缺少括号? renderPrint({ grep("*gc*",input$value }),也可以设置ignore.case = TRUE
  • 你真正想要的输出是什么。使用 grep 只能是 01。该声明还缺少两个点renderPrint({ grep(".*gc.*",input$value })
  • 我要查找整个字符串中“GC”出现的次数

标签: regex r


【解决方案1】:

正如 cmets 中已经指出的那样,您的代码中缺少双亲。此外,该声明似乎是错误的。 Grep 需要一个正则表达式。星星在这里没有任何意义。相反,您必须使用.*。但是,这意味着 grep 将匹配整个字符串,如果它包含 gc 我猜这也不是您想要的结果。

但是您可以使用grepexpr 来搜索字符串gc

 >gregexpr("gc","aagccaagcca")[[1]]
[1] 3 8
attr(,"match.length")
[1] 2 2
attr(,"useBytes")
[1] TRUE

输出看起来有点混乱(对我来说)。但是您可以看到该字符串位于位置 38

然后出现次数由下式给出

length(gregexpr("gc","aagccaagcca")[[1]])
[1] 2

让它也匹配大写字符串

length(gregexpr("gc","GCaagccaagcca",ignore.case=TRUE)[[1]])

最后,如果没有匹配,长度计算就会出现问题。 要解决此问题,您需要使用

 mtch <- gregexpr("gcxx","GCaagccaagcxca",ignore.case=TRUE)[[1]]
 if(mtch[1]==-1) 0 else length(mtch)

【讨论】:

  • 感谢得到答案。非常感谢
  • 但是,我仍然需要进行一些小更新,因为它在没有匹配的情况下无法正常工作。
猜你喜欢
  • 2018-01-30
  • 1970-01-01
  • 2017-05-15
  • 2016-11-06
  • 1970-01-01
  • 1970-01-01
  • 2019-05-20
  • 2016-01-28
  • 2018-05-02
相关资源
最近更新 更多