2012-07-04 44 views
8

Câu hỏi liên quan here.Xóa hai ký tự khỏi chuỗi

Vì vậy, tôi có một vectơ ký tự với các giá trị tiền tệ có chứa cả dấu đô la và dấu phẩy. Tuy nhiên, tôi muốn thử và loại bỏ cả dấu phẩy và dấu đô la trong cùng một bước.

này loại bỏ dấu hiệu đô la =

d = c("$0.00", "$10,598.90", "$13,082.47") 
gsub('\\$', '', d) 

này loại bỏ dấu phẩy =

library(stringr) 
str_replace_all(c("10,0","tat,y"), fixed(c(","), "") 

Tôi đang tự hỏi nếu tôi có thể loại bỏ tất cả các nhân vật trong một bước.

Tôi nhận ra rằng tôi chỉ có thể lưu kết quả gsub vào một biến mới và sau đó áp dụng lại (hoặc một hàm khác) trên biến đó. Nhưng tôi đoán tôi đang tự hỏi về một bước duy nhất để làm cả hai.

+2

Tôi không có chuyên gia regex, nhưng có thể 'gsub ('\\ $ |,', '', d)'? – joran

Trả lời

12

Kể từ khi trả lời trong các ý kiến ​​là xấu:

gsub('\\$|,', '', d) 

thay thế hoặc $ hoặc (|) , với một chuỗi rỗng.

+0

dấu gạch chéo kép là gì? @joran –

+1

@WhiteBig '$' là một ký tự đặc biệt trong regex và rất nhiều được thoát. Bạn có thể đọc về nó thông qua '? Regex'. – joran

+0

okay, có vẻ như với tôi rằng R sử dụng đôi // để thoát. –

3

hãy nhìn vào ?regexp để biết thêm ký hiệu regex đặc biệt:

> gsub('[[:punct:]]', '', d) 
[1] "000"  "1059890" "1308247" 
+0

Tôi nghĩ rằng điều đó cũng sẽ làm giảm điểm thập phân, điều này dường như không phải là những gì OP muốn. @ joran của câu trả lời ở trên dường như làm điều đó một cách chính xác mà không cần tiếp cận. – thelatemail

+0

@thông báo bạn đúng! Tôi không nên trả lời câu hỏi khi có tequila xung quanh! câu trả lời joran được cung cấp là tốt hơn nhiều. – Justin

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