在每一行中提取一个不同的单词

  • 本文关键字:一个 单词 一行 提取 r
  • 更新时间 :
  • 英文 :


我有一个数据框架,其中一列包含各种单词。我也有一个单独的字符串列表(与df长度不同),并且我想在数据框中创建一个新列,该列将字符串与列中的单词匹配,但只保留字符串的一部分到该单词。

例如:我有这个表:

<表类> 字 tbody><<tr>苹果植物香蕉ecoli

在'words'列上循环,使用grep获得匹配的'stringlist'值,使用sub捕获包含单词的字符并将其替换为捕获组的反向引用(\1)

df$new_words <- sapply(df$words, function(x) 
sub(sprintf("(.*%s).*", x), "\1", grep(x, stringlist, 
value = TRUE)[1]))

与产出

> df
words                  new_words
1  apple      eukaryote;plant;apple
2  plant            eukaryote;plant
3 banana     eukaryote;plant;banana
4 animal           eukaryote;animal
5    fly       eukaryote;insect;fly
6  ecoli prokaryote;bacterium;ecoli

数据
df <- structure(list(words = c("apple", "plant", "banana", "animal", 
"fly", "ecoli")), class = "data.frame", row.names = c(NA, -6L
))
stringlist <- c("eukaryote;plant;apple", "eukaryote;plant;banana", 
"eukaryote;animal;dog", 
"eukaryote;plant;orange", "eukaryote;animal;cat", "eukaryote;insect;fly", 
"prokaryote;bacterium;ecoli")

相关内容

  • 没有找到相关文章

最新更新