У меня есть фрейм данных, который содержит столбец с разделенным запятыми списком слов:
df <- data.frame(gene=c("1", "2", "3", "4"), affected_genes = c("Rim2, CG18208", "ANB, XYZ", "Gene1, Gene2", "XYZ"))
gene affected_genes
1 Rim2, CG18208
2 ANB, XYZ
3 Gene1, Gene2
4 XYZ
Я хочу отфильтровать строки, в которых affected_genes
не содержит XYZ
. Вот что я пытаюсь:
library(dplyr)
geneIn <- function(gene, gene_list){
gene %in% sapply(gene_list, function(x) strsplit(x, ", ")[[1]], USE.NAMES=FALSE)
}
df %>%
dplyr::filter(geneIn("XYZ", affected_genes))
Однако это не с Error in filter_impl(.data, quo) :
Evaluation error: non-character argument.
Когда я бегу:
affected_genes <- "ANB, XYZ"
geneIn("XYZ", affected_genes)
Я получил ожидаемый результат (TRUE
). Кто-нибудь может подсказать, что я делаю неправильно в моем первом примере?