Извлечь список строк в R

Я очень новичок в R и столкнулся со следующей проблемой при извлечении строк из столбца фрейма данных.

Допустим, у меня есть столбец A из теста фрейма данных со следующими данными. Я хотел бы создать еще один столбец B, который извлекал бы «Джон», «Мэри» и «Питер» для каждой из строк.

asdsad John asdasd
asdasd John asdasd
asdsad Mary 23123
aasdadsadsad Peter 123124
lkxfhsadf John aspowe1 123poi 
asmansd Mary p12 SL asp1
asldk John 123[p asda 214!@$

В настоящее время я использую следующий код для извлечения информации, но он не работает.

library(stringr)

list <- c("John", "Peter", "Mary")
Test$B <- str_extract(Test$A, list)

Я получаю следующий вывод, когда запускаю код.

                             A     B
                           <chr> <chr>
1            asdsad John asdasd  John
2            asdasd John asdasd  <NA>
3             asdsad Mary 23123  Mary
4     aasdadsadsad Peter 123124  <NA>
5 lkxfhsadf John aspowe1 123poi  <NA>
6      asmansd Mary p12 SL asp1  Mary
7  asldk John 123[p asda 214!@$  John

Может ли кто-нибудь помочь мне понять, почему я получаю N/A в некоторых из них? Что здесь происходит и как это исправить?


person Molia    schedule 06.09.2017    source источник
comment
Разве вы не получили предупреждающее сообщение, когда запускали этот код? Аргумент pattern= функции str_extract не соответствует отдельно каждому шаблону (что было бы возвращено, если бы в заданной строке было более одного имени?). Вместо этого он использует повторное использование векторов для проверки разных шаблонов на каждом входе.   -  person MrFlick    schedule 06.09.2017
comment
Да, я получаю следующее сообщение об ошибке: Предупреждающее сообщение: В stri_extract_first_regex(строка, шаблон, opts_regex = opts(шаблон)) : более длинная длина объекта не кратна более короткой длине объекта   -  person Molia    schedule 06.09.2017
comment
Спасибо за комментарий и ссылку. Супер полезно   -  person Molia    schedule 06.09.2017