¿Por qué y dónde se \ n introducen nuevos caracteres en c ()?

Esperando que alguien me ayude a comprender por qué los caracteres errantes \ n aparecen en un vector de cadenas que estoy creando en R.

Tratando de importar y limpiar un archivo de datos muy amplio que está en formato de ancho fijo ( http://www.state.nj.us/education/schools/achievement/2012/njask6/ , ‘Archivo de texto para la ejecución de datos’). Seguí el tutorial de UCLA sobre el uso de read.fwf y esta excelente pregunta SO para dar los nombres de las columnas después de la importación.

Debido a que el archivo es realmente ancho, los encabezados de columna son LARGOS, todos juntos, justo por debajo de 29,800 caracteres. Los estoy pasando como un simple vector de cadenas:

column_names <- c(...) 

Te ahorraré el feo botadero aquí pero dejé todo en pastebin .

Estaba limpiando y transformando algunas de las variables para el análisis cuando noté que algunos de mis subconjuntos estaban devolviendo 0 filas. Después de analizarlo (¿deleturé mal algo?) Me di cuenta de que, de alguna manera, un montón de ‘\ n’ caracteres de nueva línea se habían introducido en mis encabezados de columna.

Si recorro el vector column_names que creé

 for (i in 1:length(column_names)) { print(column_names[i]) } 

Veo el primer carácter de nueva línea en el medio de la línea 81 –

SPECIAL \ nEDUCATION SCIENCE Número de Ciencias Matriculadas

Avenidas que traté de resolver esto:

1) ¿Es algo sobre mi entorno? Estoy usando el editor de scripts regular en R, y mis líneas se ajustan, pero las interrupciones en mi pantalla no coinciden con la ubicación de los caracteres \ n, lo que a mí me sugiere que no es el editor de scripts R.

2) ¿Hay una configuración de GUI? Hizo algunas búsquedas , pero no pudo encontrar nada.

3) ¿Hay un patrón? Parece que los caracteres de nueva línea se insertan cada 4000 caracteres. Hice algunas lecturas en primitivas de R / S para tratar de averiguar si esto tenía algo que ver con las estructuras de datos R básicas, pero fue bastante rápido en mi cabeza.

Traté de dividir la larga cuerda en trozos más cortos , y luego combinarlos, y eso pareció resolver el problema.

 column_names.1 <- c(...) column_names.2 <- c(...) column_names_combined <- c(column_names.1, column_names.2) 

así que tengo una solución inmediata, pero me encantaría saber qué está pasando realmente aquí.

Algunas de las publicaciones que tenían que ver con problemas con los vectores de caracteres sugerían que ejecutara un perfil de memoria:

  memory.profile() NULL symbol pairlist closure environment promise 1 9572 220717 4734 1379 5764 language special builtin char logical integer 63932 165 1550 18935 10302 30428 double complex character ... any list 2039 1 60058 0 0 20059 expression bytecode externalptr weakref raw S4 1 16553 725 150 151 1162 

Estoy ejecutando R 2.15.1 (64 bits) R en Windows 7 (Enterprise, SP 1, 8 gigas de RAM). ¡Gracias!

Dudo que esto sea un error. En cambio, parece que te encuentras con una limitación conocida de la consola. Como dice en la Sección 1.8 – Comandos R, sensibilidad de caso, etc. de Una Introducción a R :

Las líneas de comando ingresadas en la consola están limitadas [3] a aproximadamente 4095 bytes (no caracteres).

[3] algunas de las consolas no te permitirán ingresar más, y entre las que algunas hagan descartarán en silencio el exceso y algunas lo usarán como el comienzo de la siguiente línea.

O ponga el comando en un archivo y lo source , o divida el código en varias líneas insertando sus propias líneas nuevas en los puntos apropiados (entre comas). Por ejemplo:

 column_names < - c("County Code/DFG/Aggregation Code", "District Code", "School Code", "County Name", "District Name", "School Name", "DFG", "Special Needs", "TOTAL POPULATION TOTAL POPULATION Number Enrolled LAL", ...)