R 遇到错误:非数字矩阵范围

R 遇到错误:非数字矩阵范围,r,shiny,shinydashboard,R,Shiny,Shinydashboard,我写了一个Rshiny应用程序。在这里,用户输入一个基因列表,应用程序就从中创建了一个生物网络。示例输入如下所示。代码以shinyapp的形式作为R脚本运行。输入是文本而不是数字 研究了很多类似的问题,但没什么用处,我的输入是文本 非常感谢您的帮助 library(shiny) library(shinydashboard) library(STRINGdb) sidebar <- dashboardSidebar( sidebarMenu( menuItem("Analysis", t

我写了一个Rshiny应用程序。在这里,用户输入一个基因列表,应用程序就从中创建了一个生物网络。示例输入如下所示。代码以shinyapp的形式作为R脚本运行。输入是文本而不是数字

研究了很多类似的问题,但没什么用处,我的输入是文本

非常感谢您的帮助

library(shiny)
library(shinydashboard)
library(STRINGdb)

sidebar <- dashboardSidebar(
sidebarMenu(
menuItem("Analysis", tabName = "analysis")
))

body <- dashboardBody(
tabItems(
# Text Area Input for gene list
tabItem(tabName = "analysis", 
        fluidRow(
          box(
            title = "Input gene list here", status = "warning", width 
            = 6, textAreaInput("title1","",value = "", width = 
            '100%',rows=5),
            actionButton("submit", "Submit")
          )
        ),
        fluidRow(
          box(
            title = "Stirng DB network", status = "warning", width = 8, plotOutput("stringplot")
          )
        )
)))

# User interface --
ui <- dashboardPage(
dashboardHeader(title = "Analysis", titleWidth = 300),
sidebar,
body
)

# Server logic
server <- function(input, output) {
subset_dataset <- eventReactive(input$submit, 
{data.frame(strsplit(input$title1,split='[\r\n]'),col.names='genes')})
output$stringplot <- renderPlot({
string_db <- STRINGdb$new()
mapped_genes <- string_db$map(subset_dataset,subset_dataset()$genes,removeUnmappedRows = TRUE)
hits_2<-mapped_genes$STRING_id
string_db$plot_network(hits_2)})
}

shinyApp(ui = ui, server = server)

如果将
browser()
插入
eventReactive
,则可以检查
数据帧是否如下所示:

# c..BRAF....NF1....NRAS....ERBB3....FLT3....PIK3CA....PTEN....TP53... col.names
# 1                                                                  BRAF     genes
# 2                                                                   NF1     genes
# 3                                                                  NRAS     genes
# ...
您可以使用以下表达式来解决此问题:
data.frame(genes=unlist(strsplit(输入$title1,split='[\r\n]'))

结果
数据帧

# genes
# 1    BRAF
# 2     NF1
# 3    NRAS
# ...
我不熟悉该包,但在我看来,传递给
string\u db$map
的参数不正确:

  • 第一个参数:
    data.frame
    。在传递一个
    reactive
    eventReactive
    时,您应该包括括号(例如:
    subset\u dataset()
  • 第二个参数:使用字符串:(例如:
    “genes”
这对我很有用:
mapped_基因
# genes
# 1    BRAF
# 2     NF1
# 3    NRAS
# ...