【发布时间】:2021-07-08 01:07:19
【问题描述】:
我开始学习如何使用 dplyr 的管道 (%>%) 命令来操作数据帧。我喜欢它看起来更加精简。但是,我刚刚遇到了一个仅使用管道无法解决的问题。
我有一个数据框,其中包含如下所示的关系(网络)数据:
前两列表示哪些项目(基因)之间存在关系,第三列包含有关该关系的信息:
a b c
1 Gene_1 Gene_2 X
2 Gene_2 Gene_3 R
3 Gene_1 Gene_4 X
我的目标是获取具有相同属性的独特基因列表。如果选择了 col 3 中的属性X,我会得到这个数据框:
a b c
1 Gene_1 Gene_2 X
3 Gene_1 Gene_4 X
我想以这个独特基因列表结束:
genes = c("Gene_1" "Gene_2" "Gene_4")
项目(基因)来自第一列还是第二列都没有关系,我只想要一个唯一的列表。我想出了这个解决方案:
library(tidyr)
net = tibble(a = c("Gene_1", "Gene_2", "Gene_1"),
b = c("Gene_2", "Gene_3", "Gene_4"),
c = c("X", "R", "X"))
df = net %>%
filter(c == "X") %>%
select(c(1,2))
genes = unique(c(df$a, df$b))
但我并不满意,因为我无法在 dplyr 管道命令中完成所有操作。我必须在管道命令之外创建一个列表,然后在其上调用 unique。
有没有办法通过调用另一个管道来完成这项任务?我无论如何都找不到这样做。谢谢。
【问题讨论】: