Есть несколько способов сделать это. Один из способов в базе R - это то, что близко к тому, что вы уже получили, это which()
в сочетании с %in%
Gene <- c("123", "327", "445", "557", "789", "123", "557")
Taxa <- c("A", "B", "D", "A", "E", "B", "C")
toDrop <- data.frame(Gene, Taxa)
Temp <- list()
geneNameTemp <- "123"
Temp <- as.list(toDrop[which(toDrop$Gene %in% geneNameTemp),2])
Temp
# [[1]]
# [1] A
# Levels: A B C D E
#
# [[2]]
# [1] B
# Levels: A B C D E
. Возвращает список с двумя факторами. Этот метод может быть расширен до вектора geneNameTemp, но он будет содержать дубликаты, если есть какие-либо
Gene <- c("123", "327", "445", "557", "789", "123", "557")
Taxa <- c("A", "B", "D", "A", "E", "B", "C")
toDrop <- data.frame(Gene, Taxa)
Temp <- list()
geneNameTemp <- c("123", "327")
Temp <- as.list(toDrop[which(toDrop$Gene %in% geneNameTemp),2])
Temp
# [[1]]
# [1] A
# Levels: A B C D E
#
# [[2]]
# [1] B
# Levels: A B C D E
#
# [[3]]
# [1] B
# Levels: A B C D E
Если вам нужен только вектор с факторами, которые вы можете удалить as.list()
. Если вы хотите удалить дубликаты, вы можете использовать unique(toDrop[which(toDrop$Gene %in% geneNameTemp),2])
.