用一个 gsubfn() 替换包含不同数量字符的多个字符串
Replace multiple strings comprising of a different number of characters with one gsubfn()
这里说明用gsubfn()
替换一条语句中一个字符at的多个字符串。例如:
x <- "doremi g-k"
gsubfn(".", list("-" = "_", " " = ""), x)
# "doremig_k"
但是我想用''替换示例中的字符串'doremi'。这不起作用:
x <- "doremi g-k"
gsubfn(".", list("-" = "_", "doremi" = ""), x)
# "doremi g_k"
我猜是因为字符串'doremi'包含多个字符,而我在gsubfn
中使用元字符.
。我不知道用什么来代替它 - 我必须承认我发现元字符的使用有时有点难以理解。因此,有没有办法让我一次替换'-'和'doremi'?
这对你有用吗?
gsubfn::gsubfn(pattern = "doremi|-", list("-" = "_", "doremi" = ""), x)
[1] " g_k"
关键是此搜索:"doremi|-"
,它指示搜索 "doremi"
或 "-"
。使用 "|"
作为 or
运算符。
您可以在此处使用基本 R sub
:
x <- "doremi g-k"
result <- sub("doremi\s+([^-]+)-([^-]+)", "\1_\2", x)
result
[1] "g_k"
@RLave 的解决方案只是一个更通用的解决方案 -
toreplace <- list("-" = "_", "doremi" = "")
gsubfn(paste(names(toreplace),collapse="|"), toreplace, x)
[1] " g_k"
这里gsubfn()
替换一条语句中一个字符at的多个字符串。例如:
x <- "doremi g-k"
gsubfn(".", list("-" = "_", " " = ""), x)
# "doremig_k"
但是我想用''替换示例中的字符串'doremi'。这不起作用:
x <- "doremi g-k"
gsubfn(".", list("-" = "_", "doremi" = ""), x)
# "doremi g_k"
我猜是因为字符串'doremi'包含多个字符,而我在gsubfn
中使用元字符.
。我不知道用什么来代替它 - 我必须承认我发现元字符的使用有时有点难以理解。因此,有没有办法让我一次替换'-'和'doremi'?
这对你有用吗?
gsubfn::gsubfn(pattern = "doremi|-", list("-" = "_", "doremi" = ""), x)
[1] " g_k"
关键是此搜索:"doremi|-"
,它指示搜索 "doremi"
或 "-"
。使用 "|"
作为 or
运算符。
您可以在此处使用基本 R sub
:
x <- "doremi g-k"
result <- sub("doremi\s+([^-]+)-([^-]+)", "\1_\2", x)
result
[1] "g_k"
@RLave 的解决方案只是一个更通用的解决方案 -
toreplace <- list("-" = "_", "doremi" = "")
gsubfn(paste(names(toreplace),collapse="|"), toreplace, x)
[1] " g_k"