2013-02-14 28 views
18

Tôi đang làm việc trong R và gặp khó khăn khi thoát dấu gạch chéo ngược. Tôi đang sử dụng thư viện stringr.Làm thế nào để thoát khỏi dấu gạch chéo ngược trong R?

install.packages("stringr", repos='http://cran.us.r-project.org') 
library("stringr") 

Tôi muốn làm str = str_replace_all(str, "\", "")

Vì vậy, tôi đã cố gắng str = str_replace_all(str, "\\", "") nhưng nó sẽ không hoạt động.

Tôi nên làm gì?

+67

Khi nghi ngờ, hãy tiếp tục thêm dấu gạch chéo cho đến khi nó hoạt động. – joran

+0

Tôi mắc lỗi. Nhưng tôi tìm thấy giải pháp với gsub ("([\\])", "", str) –

+1

@joran Nhận xét đó có nhiều lợi ích hơn mọi thứ khác trong chuỗi được kết hợp. Lời thật của trí tuệ. – Dason

Trả lời

16

Tôi tìm thấy một giải pháp mà làm việc

str = gsub("([\\])","", str) 
+14

Theo nhận xét của tôi, sử dụng '" \\\\ "' làm mẫu sẽ hoạt động tốt (với 'gsub' hoặc' str_replace_all'. – joran

+2

'gsub (" \\ "," ", str, fixed = TRUE) 'cũng sẽ làm việc. Bạn chỉ cần nhớ rằng trong R,' \\ 'chỉ là một ký tự. Hãy thử như sau:' x <- "my \\ strin \\ g \\ with \\ slashes"; print (x), cat (x) ' – A5C1D2H2I1M1N2O1R2T1

+0

Trong RE, \\ match \. Khi bạn cần scape mỗi \ R hiểu nó như \, bạn cần sử dụng' gsub ("\\\\", "", str) ' – Rcoster

8

Sử dụng Hmisc::escapeRegexHmisc::escapeBS tự động thoát backslashes và ký tự đặc biệt regex khác.

+0

Thậm chí không phải 'Hmisc' sẽ cho phép bạn hoàn toàn' escapeBS', bởi vì cuối cùng BS là không thể tránh khỏi (đặc biệt là trong lập trình, và 'rep ('đặc biệt', 2)' trong R). – geneorama