2016-09-20 75 views
4

我对R很新。我试图想出一个R中的代码,它可以帮助我像下面的字符串一样使用括号将字符串转换为:带括号的R格式字符串并在其中添加冒号

(65 97) (80 12) (82 832) (108 23) 

成这样的格式:

65:97 80:12 82:832 108:23 

我想我应该找到每个支架之间的空间的位置,取而代之的是:和后来删除了括号,但我不知道怎么样。有人可以帮忙吗?

回答

1

可以使用gsub背部参考如下:

gsub("\\(*(\\d+) +(\\d+) *\\)", "\\1:\\2", "(65 97) (80 12) (82 832) (108 23)") 

# [1] "65:97 80:12 82:832 108:23" 
  • \\(*(\\d+) +(\\d+) *\\)那里有封闭的由一个或多个空格分隔的两个数字的括号单元相匹配。 *这里是匹配括号和数字之间的可选空格。
  • 在替换部分,您可以使用反向引用\\1\\2来引用第一个和第二个捕获组,即两个(\\d+)并使用插入的冒号格式化它们。
+0

非常感谢您的帮助。你让我今天很开心。只是想完全理解它,*将这两个捕获组分开“\\(?(\\ d +)和(\\ d +)?\\ right? –

+0

我应该使用'+',因为它确保存在两个数字之间的空格是的,它分隔两个捕获组(\\ d +)','\\(*'和'* \\)'是圆括号和可选空格的精确匹配。 – Psidom