多个字符串替换,在 R 中使用 gsubfn()
Multiple string replacement, using gsubfn() in R
我要替换:
(1) ", "
(逗号+space)和"_"
(下划线)
(2) "'"
(撇号)和 "'s"
(撇号+s)
library(gsubfn)
x <- c("Mary' car is red.", "A, B, C")
gsubfn(".", list(", " = "_", "'" = "'s"), x)
我要的是"Mary's car is red."
和"A_B_C"
,结果却是"Mary's car is red."
和"A, B, C"
。为什么?
试试这个:
toreplace<-list(", " = "_", "'" = "'s")
gsubfn(paste(names(toreplace),collapse="|"),toreplace,x)
#[1] "Mary's car is red." "A_B_C"
您的方法存在问题,您的模式只是一个字符 (.
),无法匹配 ", "
.
x <- c("Mary' car is red.", "A, B, C")
l <- list(r1 = c("'","'s"),
r2 = c(', ','_'))
gsub2 <- function(l, x, ...)
do.call('gsub', c(list(x = x, pattern = l[1], replacement = l[2]), ...))
Reduce('gsub2', l, x, right = TRUE)
# [1] "Mary's car is red." "A_B_C"
或更多
l <- list(r1 = c("'","'s"),
r2 = c(', ','_'),
r3 = c('M', 'Mmmm'),
r4 = c('\br', 'rrrr'),
r5 = c('\.', '!!!'))
Reduce('gsub2', l, x, right = TRUE)
# [1] "Mmmmary's car is rrrred!!!" "A_B_C"
我要替换:
(1) ", "
(逗号+space)和"_"
(下划线)
(2) "'"
(撇号)和 "'s"
(撇号+s)
library(gsubfn)
x <- c("Mary' car is red.", "A, B, C")
gsubfn(".", list(", " = "_", "'" = "'s"), x)
我要的是"Mary's car is red."
和"A_B_C"
,结果却是"Mary's car is red."
和"A, B, C"
。为什么?
试试这个:
toreplace<-list(", " = "_", "'" = "'s")
gsubfn(paste(names(toreplace),collapse="|"),toreplace,x)
#[1] "Mary's car is red." "A_B_C"
您的方法存在问题,您的模式只是一个字符 (.
),无法匹配 ", "
.
x <- c("Mary' car is red.", "A, B, C")
l <- list(r1 = c("'","'s"),
r2 = c(', ','_'))
gsub2 <- function(l, x, ...)
do.call('gsub', c(list(x = x, pattern = l[1], replacement = l[2]), ...))
Reduce('gsub2', l, x, right = TRUE)
# [1] "Mary's car is red." "A_B_C"
或更多
l <- list(r1 = c("'","'s"),
r2 = c(', ','_'),
r3 = c('M', 'Mmmm'),
r4 = c('\br', 'rrrr'),
r5 = c('\.', '!!!'))
Reduce('gsub2', l, x, right = TRUE)
# [1] "Mmmmary's car is rrrred!!!" "A_B_C"