2017-01-14 6 views
1

Я извлекая модели с регулярным выражением и построение data.frame с dplyrПреобразование вывода списка, чтобы создать в data.frame dplyr трубы

library (dplyr) 
library (stringr) 

Target <- c("@user1 lorem ipsum @user2", "@user3 lorem ipsum @user4") 
Source <- c(" lorem ipsum", "dolores") 
dataset <- data.frame(Source, Target) 


dataset2 <- dataset %>% 
mutate (Target=str_extract_all(v1, "@\\w+")) 

Мои результаты (data.frame):

lorem ipsum c("@user1", "@user2") 
dolores  c("@user3", "@user4") 

То, что я хочу в data.frame объекта:

lorem ipsum "@user1" 
lorem ipsum "@user2" 
dolores  "@user3" 
dolores  "@user4" 

ответ

1

Мы можем попробовать

stack(setNames(str_extract_all(dataset$Target, "@\\w+"), dataset$Source))[2:1] 
#   ind values  
#1 lorem ipsum @user1 
#2 lorem ipsum @user2 
#3  dolores @user3 
#4  dolores @user4 

Или мы можем использовать unnest из tidyr

library(dplyr) 
library(tidyr) 
dataset %>% 
     mutate(Target = str_extract_all(Target, "@\\w+")) %>% 
     unnest 
#  Source Target 
#1 lorem ipsum @user1 
#2 lorem ipsum @user2 
#3  dolores @user3 
#4  dolores @user4 
+0

Он отлично работает @akrun! Итак, вы можете помочь мне найти лучшее название для моего вопроса? – Wilcar

+0

@ Wilcar Рад помочь вам. Возможно, 'Преобразование вывода списка для создания data.frame' – akrun

+1

Хорошая идея. Я редактировал свой заголовок – Wilcar