5

如何删除R中的花括号?例如。"{abcd}" 到 "abcd"

如何在 R 中使用 gsub 函数来执行此操作?如果有其他方法可用,请提出建议。

4

3 回答 3

10

尝试这个

gsub("\\{|\\}", "", "{abcd}")
[1] "abcd"

或这个

gsub("[{}]", "", "{abcd}")
于 2013-07-08T13:43:06.670 回答
4
x <- "{abcd}"
gsub("^\\{+(.+)\\}+$", '\\1', x)

这将删除字符串两端的所有大括号。这与@Dickoa 的答案之间的区别在于,这会将任何大括号单独留在字符串中。

于 2013-07-08T13:44:04.557 回答
0

我倾向于用参数分两步来做fixed = TRUE,这会加快速度。

x <- "{abcd}"
res1 = gsub("{", "", x, fixed = TRUE)
res1 = gsub("}", "", res1, fixed = TRUE)

一些基准测试会告诉你它的速度大约是原来的两倍:

mc = microbenchmark::microbenchmark(times = 300,
  a={
    gsub("\\{|\\}", "", x)
  },
  b = {
    gsub("[{}]", "", x)
  },
  c = {
    gsub("^\\{+(.+)\\}+$", '\\1', x)
  },
  d = {
    res2 = gsub("{", "", x, fixed = TRUE)
    gsub("}", "", res2, fixed = TRUE)
  }
)
mc
Unit: microseconds
    expr   min    lq     mean median    uq    max neval
    a 5.120 5.121 5.864220 5.6900 5.690 18.774   300
    b 5.120 5.121 5.947683 5.6900 5.690 21.050   300
    c 6.827 7.112 8.027910 7.3965 7.965 35.841   300
    d 1.707 2.277 2.877600 2.8450 2.846 14.223   300
于 2019-02-13T14:16:49.350 回答