2012-08-15 25 views
5

"Enerji per m" dizesini içeren bir matrisi var. 'm' önce bir soru işareti olan bir elmas şekilli semboldür - ne olduğunu bilmiyorum.R Veri karesinden özel karakterleri kaldırın

Ben matrisi sütun üzerinde bu kullanarak ondan kurtulmak için çalıştık: [gsub ilk dönem için kopya/yapıştır kullanarak ve]

a=gsub('Energy per �m','',a) 

ama çalışmıyor [. "a = temsilcisi (5, başına enerji"] beklenmedik sembol Ben grepl orijinal matrisin bir şeyler çıkarmayı çalıştığımda alıyorum:.?

Ben işaretleri tüm bu tür kurtulabilirsiniz Nasıl
46: In grepl("ref. value", raw$parameter) : 
input string 15318 is invalid in this locale 

Ben sadece 0-9, AZ, az,/ve sahip olmak isterdim.Geri dinlenme zaptedilebilir

+2

kullanımını 'iconv' ilk (' iconv:?

gsub("[^0-9A-Za-z///' ]", "", a) [1] "Energy per m" 

Ama @JoshuaUlrich tarafından belirttiği gibi, kullanmak daha iyidir – dickoa

cevap

18

Bunu yapmak için normal ifadelerden daha iyi bir yöntem vardır (ör. Encoding değiştirerek).

Ama burada regex çözümdür:

gsub("[^[:alnum:]///' ]", "", x) 
[1] "Energy per m" 
+14

'[^ [: alnum:]]' '[^ 0-9A-Za-z]' ye tercih edilir. İkincisine göre, “? Regex”, “yorumlarının yerel ve uygulamaya bağlı olduğu için en iyi şekilde kaçınıldığını” söylüyor. ve "Örneğin," [[: alnum:]] '' '[0-9A-Za-z]' anlamına gelir, ikincisi, yerele ve karakter kodlamasına bağlıdır, oysa eskinin yeri ve karakter kümesinden bağımsızdır. " –

+0

@JoshuaUlrich Top ipucu. Cevap düzenlenmiş, teşekkürler. – Andrie

+4

Teşekkürler. Sadece biliyorum, ilk çözümünüzü bir paket içinde kullanmak için Ripley'deydim. ;-) –

İlgili konular