2012-08-15 1056 views
5

Tengo una matriz que contiene la cadena "Energía por m". Antes de que la 'm' sea un símbolo en forma de diamante con un signo de interrogación, no sé qué es.R eliminar caracteres especiales del marco de datos

he tratado de deshacerse de él mediante el uso de esta en la columna de la matriz:

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

[y usar copiar/pegar para el primer término de gsub], pero no funciona [. símbolo inesperado en "a = rep (5, de energía por"] Cuando trato de extraer algo de la matriz original con Grepl me sale:.?

46: In grepl("ref. value", raw$parameter) : 
input string 15318 is invalid in this locale 

¿Cómo puedo deshacerme de todo este tipo de señales que le gustaría tener solo 0-9, AZ, az,/y '. El resto puede ser eliminado.

+2

uso 'iconv' primera (' iconv? ') – dickoa

Respuesta

18

Probablemente haya una mejor manera de hacerlo que con expresiones regulares (p. Ej. cambiando el Encoding).

Pero aquí es la solución de expresiones regulares:

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

Pero, como ha señalado @JoshuaUlrich, es mejor utilizar:

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

' [^ [: alnum:]] 'es preferible a' [^ 0-9A-Za-z] '. Con respecto a esto último, '? Regex' dice" porque su interpretación depende de la configuración local y de la implementación, es mejor evitarla ". y "Por ejemplo,' [[: alnum:]] 'significa' [0-9A-Za-z] ', excepto que este último depende de la configuración regional y de la codificación de caracteres, mientras que el primero es independiente de la configuración regional y del conjunto de caracteres. " –

+0

@JoshuaUlrich Consejo superior. Respuesta editada, gracias. – Andrie

+4

Gracias. Solo sé que de ser Ripley por usar tu primera solución en un paquete. ;-) –

Cuestiones relacionadas