0

亲爱的 Stackoverflow 用户,

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

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

单元格中的“1”表示在给定条件下存在基因,“0”表示不存在基因。

如何获得仅在给定列中包含“1”的行的行名的向量,但没有其他列(即,在该条件下唯一存在的基因?)

以及如何获得一个向量,其行的行名在指定的一组列中包含“1”但在所有其他列中包含“0”(例如,在条件/列 1,2 和 5 中唯一存在的基因) ?

我期待着您的建议!

非常感谢:-)

4

1 回答 1

0

这是使用该tidyverse软件包的可能性。由于您没有提供任何数据,因此我创建了一些如下所示的虚拟数据:

编辑:我包括行名

> 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”和“D”等于 1 且其他列等于 0 的所有行。这可以这样做:

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
于 2019-03-06T12:56:23.713 回答