Я пытаюсь расширить ответ из Найти строку в data.frame и Найти несколько строк во всем фрейме данных.
Как я могу использовать результаты согласований для извлечения соответствующих элементов data.frame? Здесь под результатами подразумеваются результаты из which()
с arr.ind = TRUE
или sapply()
mat = as.data.frame(matrix(1:9, nrow = 3))
mat[1, 3] = "12:14"
mat[2, 1] = "18:48"
mat[2, 2] = "10:10"
# using the "which()" option
which(mat == "10:10", arr.ind = TRUE)
# the expected result is (may be in a vector type):
# > "18:48"
# using the "sapply()" option
sapply(colnames(mat), function(x) grep(":", mat[, x]))
# the expected result is (may be in a vector type):
# > "18:48", "10:10", "12:14"
# if I use grepl() rather than grep()
text = mat[sapply(colnames(mat), function(x) grepl(":", mat[, x])), ]
# I get an unexpected result as:
# > text
# V1 V2 V3
# 2 18:48 10:10 8
# NA <NA> <NA> <NA>
# NA.1 <NA> <NA> <NA>