【问题标题】:Using stringr::str_replace_all with character vector将 stringr::str_replace_all 与字符向量一起使用
【发布时间】:2018-08-30 21:13:22
【问题描述】:

stringr 包中的str_replace_all 允许您通过将命名向量传递到replacement= 参数来进行多次替换。

library(stringr)
charz <- data.frame(a = c('A', 'B'), stringsAsFactors = F)

# Works fine
str_replace_all('ABC', c('A' = '1', 'B' = 2))
[1] "12C" 

如何使用数据帧中的值而不是裸字符向量来执行此操作?

# Does not work
# Should return "12C" as above

str_replace_all('ABC', c(charz$a[1] = '1', charz$a[2] = 2)) 
Error: unexpected '=' in "str_replace_all('ABC', c(charz$a[1] ="

str_replace_all('ABC', c(charz$a[1], charz$a[2]), c('1', '2'))
[1] "1BC" "A2C"

【问题讨论】:

  • 运行我发布的内容会得到什么?
  • 我得到了正确答案,但我想使用 char_rep$a
  • 我将编辑我的问题

标签: r stringr


【解决方案1】:

来自函数的帮助页面:

如果您想对同一个字符串应用多个模式和替换,请将命名向量传递给模式。

我不知道为什么你不能参考df$var 来动态命名一个向量,但希望在使用str_replace_all() 之前这样做对你来说是可行的。

vec <- c("1", "2")
names(vec) <- charz$a

str_replace_all("ABC", vec)
> [1] "12C"

【讨论】:

    猜你喜欢
    • 2023-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多