【发布时间】:2017-04-27 08:11:51
【问题描述】:
我想首先在向量中获取一个字符串,然后用长度相同或为 1 的匹配向量替换它。我使用了具有函数 multigsub 的 qdap 包。虽然它只是取代了一切。所需输出的示例(以及带有循环的解决方案)。此外,我不希望找到“Jabad”。
df1 <- data.frame(string = c("Erik is pretty good", "Fred is regular", "James is bad", "Jabad is extra"))
replacements <- c("good", "regular", "bad")
df1$status <- NA
for(i in 1:3){
df1[grepl(replacements[i], df1$string), "status"] <- replacements[i]
}
df1
第二个例子
df1$status <- "Status unknown"
for(i in 1:3){
df1[grepl(replacements[i], df1$string), "status"] <- "Status known"
}
df1
寻找类似于 multigsub 的东西,其中 is 可以指定两个向量,例如 c("... Good ...", "... Best ...", "... Regular ...", "... Extra" ...) 将被替换为 c(“好”、“好”、“常规”、“最佳”)。在这种情况下,multigsub 将返回单词之前/之后的文本(在本例中由 ... 表示)。
【问题讨论】:
-
添加单词边界。即
df1[grepl(paste0('\\b', replacements[i], '\\b'), df1$string), "status"] <- replacements[i]