Regex R映射等价?

Regex R映射等价?,regex,r,Regex,R,必须是避免在R中这样做的一种方法。某种映射函数?基本上,我们希望指定一系列grepl条件和一系列替换。谢谢 hold[grepl('TRAVEL', hold[, "exp_pur_desc"]), "exp_pur_desc"] <- "TRAVEL" hold[grepl('IN-KIND:', hold[, "exp_pur_desc"]), "exp_pur_desc"] <- "IN-KIND" hold[grepl('COMPLIANCE', hold[, "exp_pu

必须是避免在R中这样做的一种方法。某种映射函数?基本上,我们希望指定一系列grepl条件和一系列替换。谢谢

hold[grepl('TRAVEL', hold[, "exp_pur_desc"]), "exp_pur_desc"] <- "TRAVEL"
hold[grepl('IN-KIND:', hold[, "exp_pur_desc"]), "exp_pur_desc"] <- "IN-KIND"
hold[grepl('COMPLIANCE', hold[, "exp_pur_desc"]), "exp_pur_desc"] <- "COMPLIANCE"
hold[grepl('MEDIA', hold[, "exp_pur_desc"]), "exp_pur_desc"] <- "MEDIA"
hold[grepl('WATER|FOOD|OFFICE|Office|CLEANING|ALARM', hold[, "exp_pur_desc"]), "exp_pur_desc"] <- "OFFICE"
hold[grepl('DATA', hold[, "exp_pur_desc"]), "exp_pur_desc"] <- "DATA"
hold[grepl('LEGAL', hold[, "exp_pur_desc"]), "exp_pur_desc"] <- "LEGAL"
hold[grepl('EVENT', hold[, "exp_pur_desc"]), "exp_pur_desc"] <- "EVENT"
hold[grepl('CATERING', hold[, "exp_pur_desc"]), "exp_pur_desc"] <- "CATERING"
hold[grepl('PHONE', hold[, "exp_pur_desc"]), "exp_pur_desc"] <- "PHONE"
hold[grepl('EQUIPMENT', hold[, "exp_pur_desc"]), "exp_pur_desc"] <- "EQUIPMENT"
hold[grepl('FUNDRAISING|FINANCE', hold[, "exp_pur_desc"]), "exp_pur_desc"] <- "FUNDRAISING"
hold[grepl('PAYROLL', hold[, "exp_pur_desc"]), "exp_pur_desc"] <- "PAYROLL"
hold[grepl('LIST RENTAL', hold[, "exp_pur_desc"]), "exp_pur_desc"] <- "LIST RENTAL"
hold[grepl('TRAVEL',hold[,“exp\u pur\u desc”]),“exp\u pur\u desc”]这里有一种方法:

strReplace <- function(x, mapFrom, mapTo) {
    for (i in seq_along(mapFrom)) {
        x <- gsub(mapFrom[[i]], mapTo[[i]], x)
    }
    x
}

strReplace(c("Hello cruel world!", "Hello again Tellus!"), # Text
           c("Hello", "world|Tellus"), # words to replace (regular expressions)
           c("Hi", "moon"))            # words to replace with
#[1] "Hi cruel moon!" "Hi again moon!"

strReplace这里有一个使用
gsubfn
包的选项,它将用“A”替换任何单词,仅用“A”,与“E”相同,任何带有“I”、“O”或“U”的单词都将替换为“IOU”,任何小写元音都将使用“other”替换(这将替换整个字符串,这似乎是所要求的,如果需要其他内容,可以对其进行修改):

库(gsubfn)

替换我猜你想要
做。调用
和/或
lappy
,但你的代码不可复制,所以这仍然是一个猜测,因为我们不知道hold是什么。为什么你不只使用这两列来构建玩具源和目标数据集。然后你应该说正确的答案是什么。看起来你正在替换“TRAVE”对于许多看起来多余的行,使用“TRAVEL”等,或者我遗漏了什么?+1。此外,由于OP提到了“map”,我会发现在调用函数之前,将模式和替换放在一个两列的data.frame中是非常优雅的。
hold<-data.frame(ID=11:12, exp_pur_desc=c('FOOD','FINANCE'))
hold[['exp_pur_desc']] <- strReplace(hold[['exp_pur_desc']],
  c('WATER|FOOD|OFFICE|Office|CLEANING|ALARM', 'FUNDRAISING|FINANCE'),
  c('OFFICE', 'FUNDRAISING'))
hold
library(gsubfn)

replacements <- list(A='A', E='E', I='IOU', O='IOU', U='IOU', 'other')

gsubfn('^.*?(A|E|I|O|U|a|e|i|o|u).*$', replacements, state.name)