R “错误”;“非数字”;使用带有EnhancedVolcano的串扰包时

R “错误”;“非数字”;使用带有EnhancedVolcano的串扰包时,r,shiny,plotly,bioconductor,ggplotly,R,Shiny,Plotly,Bioconductor,Ggplotly,我想在两个方向上实现表和绘图之间的串扰功能: 选择表中将反映在绘图中的行 在绘图中选择一个点,该点将反映在表格中。和我的想法一样 我已经成功地实现了一个脚本,如果我使用ggplot()和table(两个对象都有串扰!)制作散点图,那么这个脚本的效果会非常好。但是,当使用EnhancedVolcano()和表I时,出现以下错误: Error in EnhancedVolcano(toptable = data_shared, lab = "disp", x = "qsec", : qsec

我想在两个方向上实现表和绘图之间的串扰功能:

  • 选择表中将反映在绘图中的行
  • 在绘图中选择一个点,该点将反映在表格中。和我的想法一样
  • 我已经成功地实现了一个脚本,如果我使用
    ggplot()
    和table(两个对象都有串扰!)制作散点图,那么这个脚本的效果会非常好。但是,当使用
    EnhancedVolcano()
    和表I时,出现以下错误:

    Error in EnhancedVolcano(toptable = data_shared, lab = "disp", x = "qsec",  : 
      qsec is not numeric! 
    
    Error in as.data.frame.default(toptable) : 
      cannot coerce class ‘c("SharedData", "R6")’ to a data.frame
    
    如果我用
    df\u orig
    替换
    data\u shared
    变量,则不会产生错误,但对象之间不会发生交叉对话:(

    这是否意味着
    SharedData$new()
    无法将数值识别为数值?如何修复此错误

    非常感谢您的帮助。 多谢各位

    玩具示例:

      library(plotly)            # '4.9.1'
      library(DT)                # '0.11'
      library(crosstalk)         # ‘1.0.0’
      library(EnhancedVolcano)   # ‘1.4.0’
      # Input
      data1 = mtcars  #dim(data1)  # 32  11
      data_shared = SharedData$new(data1) #, key = c("qsec", "hp"))
      # df_orig = data_shared$origData()
      # V-Plot
      vp =EnhancedVolcano( toptable = data_shared,
                           lab  = 'disp',
                           x  =  'qsec',
                           y  =  'hp',
                           xlab  ='testX',
                           ylab = 'testY') 
      bscols(
        ggplotly(vp + aes(x= qsec, y= -log10(hp/1000))),
        datatable(data_shared, style="bootstrap", class="compact", width="100%",
                  options=list(deferRender=FALSE, dom='t')))
    
    相同的脚本,可用于
    ggplot()


    注意:相关(相同)问题是,软件包作者发布了一个答案,经作者许可,在此处复制一个答案:


    谢谢-这是非常有用的代码,最终我可能会将其添加到主程序包vignette中

    我在我的电脑上试过了,我可以在我的浏览器中使用它,但原始绘图的某些部分似乎丢失了。我想你只需要将列“qsec”转换为数值

    再次使用我的示例,这里是一个完全可复制的示例:

      library("pasilla")
      pasCts <- system.file("extdata", "pasilla_gene_counts.tsv",
        package="pasilla", mustWork=TRUE)
      pasAnno <- system.file("extdata", "pasilla_sample_annotation.csv",
        package="pasilla", mustWork=TRUE)
      cts <- as.matrix(read.csv(pasCts,sep="\t",row.names="gene_id"))
      coldata <- read.csv(pasAnno, row.names=1)
      coldata <- coldata[,c("condition","type")]
      rownames(coldata) <- sub("fb", "", rownames(coldata))
      cts <- cts[, rownames(coldata)]
      library("DESeq2")
      dds <- DESeqDataSetFromMatrix(countData = cts,
        colData = coldata,
        design = ~ condition)
    
      featureData <- data.frame(gene=rownames(cts))
      mcols(dds) <- DataFrame(mcols(dds), featureData)
      dds <- DESeq(dds)
      res <- results(dds)
    
      library(EnhancedVolcano)
      p1 <- EnhancedVolcano(res,
        lab = rownames(res),
        x = "log2FoldChange",
        y = "pvalue",
        pCutoff = 10e-4,
        FCcutoff = 2,
        xlim = c(-5.5, 5.5),
        ylim = c(0, -log10(10e-12)),
        pointSize = c(ifelse(res$log2FoldChange>2, 8, 1)),
        labSize = 4.0,
        shape = c(6, 6, 19, 16),
        title = "DESeq2 results",
        subtitle = "Differential expression",
        caption = "FC cutoff, 1.333; p-value cutoff, 10e-4",
        legendPosition = "right",
        legendLabSize = 14,
        col = c("grey30", "forestgreen", "royalblue", "red2"),
        colAlpha = 0.9,
        drawConnectors = TRUE,
        hline = c(10e-8),
        widthConnectors = 0.5)
    
      p1 <- p1 +
        ggplot2::coord_cartesian(xlim=c(-6, 6)) +
        ggplot2::scale_x_continuous(
          breaks=seq(-6,6, 1))
    
      library(plotly)
      library(DT)
      library(crosstalk)  
    
      bscols(
        ggplotly(p1 + aes(x= log2FoldChange, y= -log10(pvalue))),
          datatable(
            data.frame(res),
            style="bootstrap",
            class="compact", width="100%",
            options=list(deferRender=FALSE, dom='t')))
    
    当我尝试添加这些时,它会抛出一个错误


    Kevin

    注意:相关(相同)问题是,软件包作者发布了答案,经作者许可,在此处复制答案:


    谢谢-这是非常有用的代码,最终我可能会将其添加到主程序包vignette中

    我在我的电脑上试过了,我可以在我的浏览器中使用它,但原始绘图的某些部分似乎丢失了。我想你只需要将列“qsec”转换为数值

    再次使用我的示例,这里是一个完全可复制的示例:

      library("pasilla")
      pasCts <- system.file("extdata", "pasilla_gene_counts.tsv",
        package="pasilla", mustWork=TRUE)
      pasAnno <- system.file("extdata", "pasilla_sample_annotation.csv",
        package="pasilla", mustWork=TRUE)
      cts <- as.matrix(read.csv(pasCts,sep="\t",row.names="gene_id"))
      coldata <- read.csv(pasAnno, row.names=1)
      coldata <- coldata[,c("condition","type")]
      rownames(coldata) <- sub("fb", "", rownames(coldata))
      cts <- cts[, rownames(coldata)]
      library("DESeq2")
      dds <- DESeqDataSetFromMatrix(countData = cts,
        colData = coldata,
        design = ~ condition)
    
      featureData <- data.frame(gene=rownames(cts))
      mcols(dds) <- DataFrame(mcols(dds), featureData)
      dds <- DESeq(dds)
      res <- results(dds)
    
      library(EnhancedVolcano)
      p1 <- EnhancedVolcano(res,
        lab = rownames(res),
        x = "log2FoldChange",
        y = "pvalue",
        pCutoff = 10e-4,
        FCcutoff = 2,
        xlim = c(-5.5, 5.5),
        ylim = c(0, -log10(10e-12)),
        pointSize = c(ifelse(res$log2FoldChange>2, 8, 1)),
        labSize = 4.0,
        shape = c(6, 6, 19, 16),
        title = "DESeq2 results",
        subtitle = "Differential expression",
        caption = "FC cutoff, 1.333; p-value cutoff, 10e-4",
        legendPosition = "right",
        legendLabSize = 14,
        col = c("grey30", "forestgreen", "royalblue", "red2"),
        colAlpha = 0.9,
        drawConnectors = TRUE,
        hline = c(10e-8),
        widthConnectors = 0.5)
    
      p1 <- p1 +
        ggplot2::coord_cartesian(xlim=c(-6, 6)) +
        ggplot2::scale_x_continuous(
          breaks=seq(-6,6, 1))
    
      library(plotly)
      library(DT)
      library(crosstalk)  
    
      bscols(
        ggplotly(p1 + aes(x= log2FoldChange, y= -log10(pvalue))),
          datatable(
            data.frame(res),
            style="bootstrap",
            class="compact", width="100%",
            options=list(deferRender=FALSE, dom='t')))
    
    当我尝试添加这些时,它会抛出一个错误


    Kevin试图修改火山函数中的一些内容,但出现以下错误:

    Error in EnhancedVolcano(toptable = data_shared, lab = "disp", x = "qsec",  : 
      qsec is not numeric! 
    
    Error in as.data.frame.default(toptable) : 
      cannot coerce class ‘c("SharedData", "R6")’ to a data.frame
    

    还不确定如何修复。

    尝试修改火山函数中的一些内容,但出现以下错误:

    Error in EnhancedVolcano(toptable = data_shared, lab = "disp", x = "qsec",  : 
      qsec is not numeric! 
    
    Error in as.data.frame.default(toptable) : 
      cannot coerce class ‘c("SharedData", "R6")’ to a data.frame
    

    还不确定如何修复它。

    嘿,我担心EnhancedVolcano是许多ggplot2函数的大包装,不支持串扰…要么你破解EnhancedVolcano函数,要么你用ggplot2编写火山图…哦,不!真是糟糕!!!嘿,我担心EnhancedVolcano是许多ggplot2函数的大包装d不支持串扰…要么你破解了EnhancedVolcano函数,要么你用ggplot2写火山图…哦,不!真糟糕!!!