我正在尝试使用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 })
})
答案 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
输出看起来有点令人困惑(对我而言)。但是,您可以看到该字符串位于3
和8
然后由
给出出现的次数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)