2013-08-30 32 views
16

Tôi đang cố gắng sử dụng đoạn mã sau để thay thế hai chấm cho chỉ có một:Thay thế hai chấm trong một chuỗi với gsub

test<-"test..1" 
gsub("\\..", ".", test, fixed=TRUE) 

và nhận được:

[1] "test..1" 

Tôi đã thử nhiều sự kết hợp của các chuỗi thoát, bao gồm các dấu ngoặc [] không thành công.
Tôi đang làm gì sai?

Trả lời

30

Nếu bạn đang sử dụng fixed = TRUE, sử dụng các ký tự (-giải thích phi) .:

> gsub("..", ".", test, fixed = TRUE) 

Nếu không, trong biểu thức thông thường (fixed = FALSE), . có một ý nghĩa đặc biệt (bất kỳ ký tự), do đó bạn' sẽ muốn thêm tiền tố vào dấu gạch chéo ngược để có nghĩa là "ký tự dấu chấm":

> gsub("\\.\\.", ".", test) 
> gsub("\\.{2}", ".", test) 
+11

Tôi đã thích sử dụng một lớp nhân vật thay vì thoát. 'gsub (" [.] {2} ",". ", kiểm tra)' –

Các vấn đề liên quan