【发布时间】:2013-07-08 13:40:22
【问题描述】:
如何删除 R 中的大括号? 例如。 "{abcd}" 到 "abcd"
如何在 R 中使用 gsub 函数来做到这一点?如果有其他方法可用,请提出建议。
【问题讨论】:
-
您的意思是从字符串值中删除还是从代码本身中删除?
如何删除 R 中的大括号? 例如。 "{abcd}" 到 "abcd"
如何在 R 中使用 gsub 函数来做到这一点?如果有其他方法可用,请提出建议。
【问题讨论】:
试试这个
gsub("\\{|\\}", "", "{abcd}")
[1] "abcd"
或者这个
gsub("[{}]", "", "{abcd}")
【讨论】:
x <- "{abcd}"
gsub("^\\{+(.+)\\}+$", '\\1', x)
这将删除字符串两端的所有大括号。这与@Dickoa 的答案之间的区别在于,这会将任何大括号单独留在字符串中。
【讨论】:
我倾向于使用参数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
【讨论】: