2016-09-20 43 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

相關問題