Я пытаюсь найти несколько строк в моем фрейме данных, используя функцию which.Я пытаюсь продлить ответ от Найти строку в data.frame
Пример кадра данных:
df1 <- data.frame(animal=c('a','b','c','two', 'five', 'c'), level=c('five','one','three',30,'horse', 'five'), length=c(10, 20, 30, 'horse', 'eight', 'c'))
1 a five 10
2 b one 20
3 c three 30
4 two 30 horse
5 five horse eight
6 c five c
onэтот кадр данных, когда я применяю функцию which для одной строки, я получаю правильный вывод, например, which(df1 =="c" , arr.ind = T);df1
дает:
row col
[1,] 3 1
[2,] 6 1
[3,] 6 3
Но когда я пытаюсь найти несколько строк, я получаю только частично правильный вывод, напримерwhich(df1 ==c("c", "horse", "five") , arr.ind = T)
row col
[1,] 5 2
[2,] 6 2
Ожидаемый результат должен быть:
row col
[1,] 3 1
[2,] 5 1
[3,] 6 1
[4,] 1 2
[5,] 5 2
[6,] 6 2
[7,] 4 3
[8,] 6 3
Отсюда мой вопрос:
почему решение с c ("с", "лошадь", "пять") не работает?
Я пробовал с
which(df1=="c" | df1=="horse" | df1 =="five", arr.ind = T)
, который дает мне правильный вывод, но для многих строк слишком длинный, как я могу сделать мой код лаконичным?