【问题标题】:How to bring correct result from my data frame on R shiny?如何从我的 R 闪亮数据框中获得正确的结果?
【发布时间】:2021-10-03 07:15:36
【问题描述】:

我想在我的闪亮应用程序上有一个正常工作的搜索按钮,它从我的数据框 (table1) 中获取数据。这是我的数据框;

table1 = data_frame = ( 
Ciliopathy = c("Acrocallosal Syndrome" ,"Alström Syndrome" , "Ataxia- 
telangiectasia-like Disorder" ,"Ataxia-telangiectasia-like Disorder" , 
"Autosomal Dominant Polycystic Kidney Disease (ADPK)" ,"Autosomal 
Dominant Polycystic Kidney Disease (ADPK)" , "Autosomal Dominant 
Polycystic Kidney Disease (ADPK)", "Autosomal Dominant Polycystic Kidney 
Disease (ADPK)","Autosomal Dominant Polycystic Kidney Disease (ADPK)"),

OMIM.Phenotype.Number = 
c(200990,203800,604391,615919,173900,613095,613095,600666,600666),

Human.Gene.Name = 
c("KIF7","ALMS1","MRE11","PCNA","PKD1","PKD2","PKD2","GANAB","GANAB"))

但是当我搜索一个特殊的词时,它并没有带来想要的结果。我认为有问题的部分就在这里;

generow = reactive({

table1 %>% filter (Human.Gene.Name == "a" )

})  

output$tablom <- renderTable({ 

generow()

})

但我仍然不知道如何解决,这是我的完整代码;

 ui <- fluidPage(
tags$h1("Search Input"),
br(),
searchInput(
  inputId = "a", label = "Enter your text",
  placeholder = "A placeholder",
  btnSearch = icon("search"),
  btnReset = icon("remove"),
  width = "450px"
),
br(),
(outputId = "tablom"), tableOutput("tablom")
)

server <- function(input, output, session) {

generow = reactive({

 table1 %>% filter (Human.Gene.Name == "a" )

  })  

output$tablom <- renderTable({ 
  
  generow()

  })
 }

shinyApp(ui = ui, server = server) 

我需要你的建议

【问题讨论】:

  • 您能提供一些数据吗?像 dput(table1) 一样?
  • 我已经添加了我的数据框的前 10 行。
  • 数据帧代码出错。您可能正在寻找table1 %&gt;% filter grepl("a",Human.Gene.Name))

标签: r dataframe web search shiny


【解决方案1】:

就像我在您的示例数据中看到的那样,您的“人类基因名称”始终是一个全名。 您只过滤一个字母:

table1 %>% filter (Human.Gene.Name == "a" )

如果你想过滤所有基因,包括一个“a”你需要另一个函数

 grepl("a", table1$Human Gene Name)

另外,您的行名为“人类基因名称”,但您在代码中使用 Human.Gene.Name。

【讨论】:

    【解决方案2】:

    感谢您的回复,但我不需要真正的错误回复,我只想搜索基因名称并获得ciliopathy和基因名称的omim.phenotype.number。

    这就是我写的原因 table1 %>% 过滤 (Human.Gene.Name == "a" ) 代码,因为我的 inputid="a" ("a" 被认为是搜索到的基因名称)

    【讨论】:

      【解决方案3】:

      这是您问题的解决方案,我尝试过:

      Human.Gene.Name <- c("a", "ALMS1", "MRE11", "PCNA", "PKD1", "PKD2", "PKD2", "a","GANAB")
      

      这是用户界面:

      ui <- fluidPage(
                tags$h1("Search Input"),
                br(),
                searchInput(
                          inputId = "a", label = "Enter your text",
                          placeholder = "A placeholder",
                          btnSearch = icon("search"),
                          btnReset = icon("remove"),
                          width = "450px"
                ),
                br(),
                tableOutput(outputId = "tablom")
      )
      

      和服务器:

      server <- function(input, output, session) {
                
                input.word <- reactive({
                                    input$a
                          })
              
                output$tablom <- renderTable({ 
                          
                          table1 %>% filter (Human.Gene.Name == as.character(input.word()) )%>%
                                    select(OMIM.Phenotype.Number,Ciliopathy)
                          
                })
      }
      
      shinyApp(ui = ui, server = server) 
      

      【讨论】:

      • 最好将您的 inputId = "a" 重命名为 "searchword",然后将反应输入重命名为 input$searchword。否则,如果您将变量命名为“a”并且还想搜索“a”,则会导致混淆。
      猜你喜欢
      • 2013-07-25
      • 2021-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多