我有一个词干列表,例如:
stems <- c("fri", "odd", "inspi")
我想看看一个单词是否以这些词干中的任何一个开头,然后返回该词干。例如,"fright"
以"fri"
开头,所以我想返回"fri"
。
另一方面,虽然"todd"
包含"odd"
,但它不是以"odd"
开头的,所以我不想返回任何东西。
有没有办法做到这一点?我试过str_starts()
,其中的模式参数是一个列表,但似乎不起作用。
我的数据不存在重复问题。
举一个简单的例子,如果我的数据看起来像:
dat <- tibble(complete_word = c("fright", "todd", "quirky", "oddly"))
我想返回:
dat <- tibble(complete_word = c("fright", "todd", "quirky", "oddly"),
stem <- c("fri", NA, NA, "odd"))
5条答案
按热度按时间6ju8rftf1#
从 base 中,你可以在
sapply
中使用startsWith
,并将 * 词干 * 与max.col
中的索引一起使用。使用管道也是一样。
cedebl8k2#
这里有一种使用tidyverse的方法。使用
map
和str_starts
从向量stem
中获取匹配索引(如果有的话)。结果:
ikfrs5lh3#
您需要迭代这些单词,为每个单词创建一个匹配
stems
的逻辑向量,为每个单词将stems
与该向量进行匹配,然后用NA
替换空字符串。创建于2023-06-06带有reprex v2.0.2
qojgxg4l4#
使用
regexpr/regmatches
方法。uemypmqf5#
我们可以试试
它给出了