我也想在data.frame(类为字符串)中更改“ [”(“”),但出现以下错误:
gsub(“ [”,“(”,df)中的错误: 无效的正则表达式'[',原因'缺少']''
进行反向操作非常有效:
df <- gsub("]",")", df)
所有“]”已替换为data.frame df
所以本质上这就是问题
df <- gsub("[","(", df)
gsub(“ [”,“(”,df)中的错误: 无效的正则表达式'[',原因'缺少']''
任何人都可以帮助修复代码 还是gsub可以实现相同功能的替代功能?
答案 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表
明显的缺点是您必须从表中查找十六进制代码。