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

时间:2019-02-25 12:10:56

标签: r shiny shinydashboard

我写了一个Rshiny应用程序。在这里,用户输入基因列表,然后该应用程序根据它创建一个生物网络。输入示例如下所示。该代码可以作为R脚本在Shinyapp中使用。输入是文本而不是数字。

在SO here上研究了类似的问题,但没什么用,我的输入是文本。

非常感谢您的帮助。

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)

示例输入为:

BRAF
NF1
NRAS
ERBB3
FLT3
PIK3CA
PTEN
TP53
CTNNB1
APC
SMAD4
NCOR1

1 个答案:

答案 0 :(得分:1)

如果将 L 0 marc 1 paul 2 beck 3 julia 4 rest 插入browser()中,则可以检查eventReactive看起来像这样:

data.frame

您可以改用以下表达式来解决此问题:# 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(input$title1,split='[\r\n]')))

data.frame

我对软件包不熟悉,但是在我看来传递给# genes # 1 BRAF # 2 NF1 # 3 NRAS # ... 的参数不正确:

  • 第一个参数:string_db$map。在“ Shiny”中传递data.framereactive时,应包括括号(例如:eventReactive
  • 第二个参数:使用字符串:(例如:subset_dataset()

这对我有用: "genes"

输出:

Output

奖金:我将mapped_genes <- string_db$map(subset_dataset(), "genes",removeUnmappedRows = TRUE)添加到req(subset_dataset())的第一行中,以避免在数据为renderPlot时进行渲染