[英]Encountered R shiny error: non-numeric matrix extent
我写了一个Rshiny应用程序。 在这里,用户输入基因列表,然后该应用程序根据它创建一个生物网络。 输入示例如下所示。 该代码可以作为R脚本在Shinyapp中使用。 输入是文本而不是数字。
任何帮助是极大的赞赏。
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
如果将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
的参数不正确:
data.frame
。 在Shiny中传递reactive
或eventReactive
,应包括括号(例如: subset_dataset()
)。 "genes"
) 这对我mapped_genes <- string_db$map(subset_dataset(), "genes",removeUnmappedRows = TRUE)
: mapped_genes <- string_db$map(subset_dataset(), "genes",removeUnmappedRows = TRUE)
奖励:我将req(subset_dataset())
添加到renderPlot
的第一行,以避免在数据为null
时呈现
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.