使用查询时出现 UpSetR 错误:替换有 1 行,数据有 0

UpSetR error when using queries: replacement has 1 row, data has 0

提问人:user3523406 提问时间:11/16/2022 最后编辑:zx8754user3523406 更新时间:11/22/2022 访问量:171

问:

我尝试使用 UpsetR 来可视化输入文件,可以在这里找到

> library("UpSetR")
> orthogroups_df<- read.table("orthogroups.GeneCount.tsv",  header=T, stringsAsFactors = F)
> #All species
> selected_species <- colnames(orthogroups_df)[2:(ncol(orthogroups_df) -1)] 
> selected_species
 [1] "Atha" "Cann" "NQLD" "Natt" "Ngla" "Nlab" "Nsyl" "Ntab" "Ntom" "Slyc" "Stub" "Vvin"
> head(orthogroups_df)
  Orthogroup Atha Cann NQLD Natt Ngla Nlab Nsyl Ntab Ntom Slyc Stub Vvin Total
1  OG0000000    0    0  965    0    0    3    0    0    0    0    0    0   968
2  OG0000001    0    1    3    0    0  448    0    0    0    0    0    0   452
3  OG0000002    0    1  313    0    0  120    1    0    1    0    0    0   436
4  OG0000003    0   93   15   21   46   16   33   63   36   25   39   26   413
5  OG0000004    1   42    2   34  109    6    8  154   11    9    4    0   380
6  OG0000005    0    2   61    1   34   44   91   70   43   20    1    0   367
> ncol(orthogroups_df)
[1] 14
> orthogroups_df[orthogroups_df > 0] <- 1
> upset(orthogroups_df, 
+       nsets = ncol(orthogroups_df), 
+       sets = rev(c(selected_species)), 
+       queries = list(list(query = intersects, params = list("NQLD", "Nlab", "Nsyl"), color = "#238c45", active = T),
+                 list(query = intersects, params = list("NQLD", "Nlab"), color = "#ffd977", active = T)))


Error in `$<-.data.frame`(`*tmp*`, "freq", value = 45L) : 
  replacement has 1 row, data has 0

如何解决上述错误?

R 爆冷器

评论

1赞 neilfws 11/16/2022
在不知道长什么样子的情况下很难回答。请通过包括一个纯文本格式的小型代表性数据集或指向 TSV 文件的链接来重现此问题orthogroups_df
1赞 user3523406 11/16/2022
我更新了我的问题,但可以在这里找到整个数据集。

答:

0赞 zx8754 11/22/2022 #1

我们需要将相交的数量 - nintersects - 设置为更大的数字,以便可以显示查询参数中的集合。

默认情况下,nintersects 设置为 40,并在 40 之后出现在第 90 位,因此我们需要一个更大的数字,这里我尝试使用 90:list("NQLD", "Nlab", "Nsyl")

upset(orthogroups_df, 
      nsets = ncol(orthogroups_df), 
      sets = rev(c(selected_species)), 
      nintersects = 90,
      queries = list(
        list(query = intersects,
             params = list("NQLD", "Nlab", "Nsyl"),
             color = "red",
             active = TRUE),
        list(query = intersects, 
             params = list("NQLD", "Nlab"), 
             color = "blue", 
             active = TRUE)))

enter image description here