R中的输出计算使用闪亮

时间:2016-01-27 11:21:45

标签: regex r

我正在尝试使用Shiny在用户界面中找到不同基因(字符串)中的“GC”模式。我使用R的grep命令来查找模式但我无法获得正确的输出.Below是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")))


))

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


})

1 个答案:

答案 0 :(得分:1)

正如评论中已经指出的那样,您的代码中缺少parenteses。此外,声明似乎是错误的。 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)