2016-09-02 5 views
3

die folgende Liste zu haben:purrr - verwenden vollständige Liste-Elemente in der Karte Anruf

dat <- list(words = c("foo", "bar", "howdy"), 
     pattern=c(foobar="foo|bar", cowboy="howdy"), 
     furterdat=1) 

Ich mag würde folgendes in einem Rohr-Stil Weg

require(purrr) 
require(stringr) 
map(dat$pattern, ~str_detect(dat$words, .)) 

ich denke versucht zu tun, wie

dat %>% map(.$pattern, ~str_detect, string=.$words) 
dat %>% lmap(.$pattern, ~str_detect, string=.$words) 

Aber konnte nicht das Ergebnis, das ich will. Irgendwelche Ideen?

+1

'stringi' (die Untermauerung von' stringr') über beide 'str' vektorisiert und' pattern' wenn das bei al hilft. – hrbrmstr

+0

@hrbrmstr Das stimmt, aber ich bin mir nicht sicher, wie das helfen könnte/sollte. Das Ziel besteht darin, jedes Muster auf alle Wörter anzuwenden. 'str_detect (dat $ words, dat $ pattern)' ist nicht das wonach ich suche. – Rentrop

Antwort

2

Hier finden Sie eine Option:

library(purrr) 
library(stringr) 

dat <- list(words = c("foo", "bar", "howdy"), 
     pattern=c(foobar="foo|bar", cowboy="howdy"), 
     furterdat=1) 

dat$pattern %>% map(str_detect, dat$words) 

#> $foobar 
#> [1] TRUE TRUE FALSE 
#> 
#> $cowboy 
#> [1] FALSE FALSE TRUE 
Verwandte Themen