Это должно быть похоже на то, что описано здесь
https://github.com/tidyverse/purrr/issues/179
но я бью головой о стену.
Рассмотрим фрагмент
library(tidyverse)
library(stringr)
library(stringi)
remove_short_words <- function(x, n){
mypattern <- paste("\\w{", n, ",}", sep="")
x2 <- paste(str_extract_all(x, mypattern)[[1]], collapse=' ')
}
shopping_list <- c("apples x4", "bag of flour", "bag of sugar", "milk x2")
dd<-map2(shopping_list, 4, function(x,y) remove_short_words(x,y))
ff<-map2_df(shopping_list, 4, function(x,y) remove_short_words(x,y))
map2 работает как шарм, но map2_df выдает ошибку
Error: Argument 1 must have names
Есть идеи о том, как это исправить? Спасибо!
#
Я добавляю, что работает для меня. Я использую вспомогательную функцию, которую я подключаю к карте
remove_short_words_aux <- function(x, n){
mypattern <- paste("\\w{", n, ",}", sep="")
x2 <- paste(str_extract_all(x, mypattern)[[1]], collapse=' ')
}
remove_short_words <- function(x,n){
res<-map(x, function(x) remove_short_words_aux(x,n)) %>%
unlist %>%
tibble::enframe(name = NULL)
}
> nn<-remove_short_words(shopping_list,5)
> nn
# A tibble: 4 x 1
value
<chr>
1 "apples"
2 "flour"
3 "sugar"
4 ""