Как использовать grep для поиска строк в цикле - PullRequest
0 голосов
/ 14 апреля 2019

У меня есть 2 кадра данных.

 #df1 dimensions [100,1]  
    item 
   "Like to cook"
   "Enjoy football"
    .............
   "Love to run"

 #df2 dimensions [3,1]
    item
   "Like to cook"
   "Enjoy football"
   "Love to run"

В df1 и df2 единственная переменная является sting.Я пытаюсь использовать grep, чтобы взять каждый элемент df2, найти соответствующее совпадение в df1 и вывести вектор позиций строк, где эти совпадения находятся в df1.Таким образом, результат будет выглядеть примерно так: [1] 1 2 100

   I tired the following, but for some reason I get the following  
   result: 

Integer(0).

Буду признателен за помощь, пожалуйста.

 result = NULL
 for (i in 1:nrow(df2)) {
 result = grep(df2[,1], df1)
 }
 print(result)

Ответы [ 2 ]

1 голос
/ 14 апреля 2019

После вашего цикла:

result = df
for (i in 1:nrow(df2)) {
  result[i,] = grep(df2[i,], df[,1])

}
result
         item
1           1
2           2
3           4
4 Love to run

Используя character вектор:

result = character()
for (i in 1:nrow(df2)) {
  result[i] = grep(df2[i,], df[,1])

}
result

Без петель:

 match(df2$item,df$item)
[1] 1 2 4
1 голос
/ 14 апреля 2019

В качестве альтернативы:

 result <- which(df1$a %in% df2$a)



        df1 <- data.frame(a = c("Like to cook", "Enjoy football", rep("any", 97),"Love to run"))
        df2 <- data.frame(a = c("Like to cook", "Enjoy football", "Love to run"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...