如何在for循环中使用匹配功能?

问题描述 投票:0回答:1

目标是:(1)从data1中提取多字/字符串,(2)用位于另一个数据集(data2)中的其他字符串替换这些提取的单词。

library(stringr)
data1 <- data.frame(id=c(1,2,3), 
          text=c("This is text mining exercise text",
                 "Text analysis is bit confusing analysis",
                 "Hint on this text analysis?")) 
data2 <- data.frame(mult1 = c("text","analysis","bit confusing"),
          mult2 = c("A; B; C","A; D", "A; B; C; D"))

txt <- subf <- list()
pattern <- tolower(str_c(data2$mult1, collapse = "|"))
for(i in 1:length(data1$id)){ 
  txt[[i]] <- unlist(str_extract_all(tolower(data1$text[i]), pattern))
  j <- match(txt[[i]], data2$mult1) # Here is my problem
  subf[[i]] <- data2$mult2[j]
}

如何在每次迭代中更改j的值并在subf[[i]] <- data2$mult2[j]中使用?非常感谢您的帮助。 Tnx!

r string text stringr
1个回答
0
投票

变量j没问题。循环中的最后一条语句是。默认情况下,R将文本解释为因素。因此,有两种方法可以解决它(或者至少接近解决方案)。

© www.soinside.com 2019 - 2024. All rights reserved.