使用gsub将方括号替换为方括号

时间:2019-07-25 14:00:00

标签: r gsub

我也想在data.frame(类为字符串)中更改“ [”(“”),但出现以下错误:

  

gsub(“ [”,“(”,df)中的错误:       无效的正则表达式'[',原因'缺少']''

进行反向操作非常有效:

df <- gsub("]",")", df)

所有“]”已替换为data.frame df

所以本质上这就是问题

df <- gsub("[","(", df)
  

gsub(“ [”,“(”,df)中的错误:             无效的正则表达式'[',原因'缺少']''

任何人都可以帮助修复代码 还是gsub可以实现相同功能的替代功能?

2 个答案:

答案 0 :(得分:3)

[是。元字符,因此我们可能需要fixed = TRUE或转义\\[

gsub("[", "(", df, fixed = TRUE)

答案 1 :(得分:2)

我们还可以使用ASCII字符[的十六进制表示形式,在其前缀之前加上\\x

gsub('\\x5B', '(', '[')
# [1] "("

这只是一个首选项,但是我发现在元字符[]与其原义/转义版本混合使用的情况下,它更具可读性。例如,我发现了这一点:

gsub('[\\x5B\\x5D]+', '(', ']][[[', perl = TRUE)

比这些更具可读性:

gsub('[\\]\\[]+', '(', ']][[[', perl = TRUE)
[1] "("

gsub('[][]+', '(', ']][[[', perl = TRUE)
[1] "("

gsub('[\\[\\]]+', '(', ']][[[', perl = TRUE)
[1] "("

尤其是当您使用长而复杂的图案时。

这是我在http://www.asciitable.com/中使用的ASCII表

enter image description here

明显的缺点是您必须从表中查找十六进制代码。