R-如何在二进制矩阵中的组之间提取独特的交叉点



亲爱的stackoverflow用户,

我是使用R语言来分析生物学数据的初学者,并且面临我无法解决的问题 - 也许更有经验的人可以帮助我解决这个问题吗?

我有一个大数据框,即二进制矩阵。每行代表一个不同的基因。每列在实验中都有不同的条件。

细胞中的

" 1"表示在给定条件下存在基因," 0"表示该基因不存在。

如何获得一个仅在给定列中包含" 1"的行的向量,但没有其他列(即,在这种情况下独特地存在的基因?)

以及如何在指定的一组列中包含" 1"的行的向量,但在所有其他列中的" 0"(即,在条件/colums 1,2和5例如?

我期待您的建议!

非常感谢: - )

这是使用tidyverse软件包的可能性。由于您没有提供任何数据,所以我创建了一些看起来像这样的虚拟数据:

编辑:我包括ROWNAMES

> mydata
      A B C D E
id_1 0 1 1 0 0
id_2 0 1 0 1 0
id_3 1 1 1 1 0
id_4 1 0 0 0 0
id_5 0 0 1 1 1
id_6 1 0 1 0 0

所以我有六行(命名为ID_1到ID_6),有5列被称为A到E。

说我想过滤所有行,其中" b"one_answers" d"等于1,其他列等于零。可以这样做:

library(tidyverse)
mydata %>% as_tibble(rownames = "id") %>% 
  filter_at(vars(c("B", "D")), all_vars(. == 1)) %>% 
  filter_at(vars(-c("B", "D", "id")), all_vars(. == 0))
# A tibble: 1 x 6
  id        A     B     C     D     E
  <chr> <int> <int> <int> <int> <int>
1 id_2     0     1     0     1     0

最新更新