【发布时间】:2020-05-21 10:45:25
【问题描述】:
我一直在尝试使用其他类似问题的答案,但没有运气。我有 2 个数据集:
#df1:
Gene
ACE
BRCA
HER2
#df2:
Gene interactors
GP5 ACE, NOS, C456
TP53 NOS, BRCA, NOTCH4
我希望在我的第一个数据集中添加一列,以识别在我的第二个数据集中显示为相互作用者的基因。
输出:
#df1:
Gene Matches
ACE TRUE
BRCA TRUE
HER2 FALSE
目前我正在尝试df1$Matches <- mapply(grepl, df1$Gene, df2$interactors)
这会运行,但是当我增加 df1 中的基因数量时,匹配的数量会下降,这没有意义,因为我没有删除最初运行的任何基因,这让我觉得这不像我预期的那样工作。
我也试过了:
library(stringr)
df1 %>%
+ rowwise() %>%
+ mutate(exists_in_title = str_detect(Gene, df2$interactors))
Error: Column `exists_in_title` must be length 1 (the group size), not 3654
In addition: There were 50 or more warnings (use warnings() to see the first 50)
我也尝试了这个的 dplyr 版本,但同样的错误。
还有什么其他方法可以解决这个问题?任何帮助将不胜感激。
输入数据:
dput(df1)
structure(list(Gene = c("ACE", "BRCA", "HER2")), row.names = c(NA,
-3L), class = c("data.table", "data.frame"))
dput(df2)
structure(list(Gene = c("GP5", "TP53"), interactors = c("ACE, NOS, C456",
"NOS, BRCA, NOTCH4")), row.names = c(NA, -2L), class = c("data.table",
"data.frame"))
【问题讨论】: