【发布时间】:2021-10-31 03:57:43
【问题描述】:
有一个模式列表和一个单词列表。 我需要创建一个以列作为模式的数据框并将匹配项添加到其中。 假设模式是:
模式
单词列表是:
单词
df 应该是这样的:
| arm | end | tale |
|---|---|---|
| arm | end | fairytale |
| armchair | deadend | |
| farm |
【问题讨论】:
有一个模式列表和一个单词列表。 我需要创建一个以列作为模式的数据框并将匹配项添加到其中。 假设模式是:
模式
单词列表是:
单词
df 应该是这样的:
| arm | end | tale |
|---|---|---|
| arm | end | fairytale |
| armchair | deadend | |
| farm |
【问题讨论】:
rowr 和 map 的选项
library(purrr)
library(stringr)
library(rowr)
map(patterns,
~ str_subset(words, .x)) %>%
invoke(cbind.fill, ., fill = NA) %>%
setNames(patterns)
-输出
arm end tale
1 arm end fairytale
2 armchair deadend <NA>
3 farm <NA> <NA>
【讨论】:
你可以试试:
x <- lapply(setNames(patterns, patterns), grep, words, value = TRUE)
as.data.frame(lapply(x, `length<-`, max(lengths(x))))
# arm end tale
#1 arm end fairytale
#2 armchair deadend <NA>
#3 farm <NA> <NA
【讨论】: