es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Omitiendo el carácter final de salto de línea para el archivo txt (write.table en R).

Tengo un data.frame simple que me gustaría escribir en un archivo de salida .txt usando R.

Código de muestra:

my_df <- data.frame(name = c("Wendy", "Quinn"), age = c(23, 43))
write.table(my_df, file = "my_output_file.txt", sep = " ", col.names = F, row.names = F, quote = F, eol = "\n")

El problema es que estoy obteniendo el siguiente archivo de salida al visualizarlo en Notepad++ (ver captura de pantalla). Entiendo que el argumento eol = “\n” coloca un retorno de carro al final de cada línea, lo cual quiero para separar estas dos filas, pero no al final del documento. ¿Hay alguna manera de omitir el último retorno de carro que hace que mi archivo .txt tenga 3 líneas en lugar de solo 2?

Captura de pantalla del archivo de salida .txt en Notepad++

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, hay un método para omitir el retorno de carro final que resulta en que tu archivo .txt tenga 3 líneas en lugar de solo 2. Puedes cambiar el argumento final “eol” a “ifelse(row_number() == nrow(my_df), ”, ‘\n’)” en la función “write.table”. Esto verifica si la fila actual es la última fila en el marco de datos y, de ser así, reemplaza el carácter “eol” con una cadena vacía, omitiendo efectivamente el retorno de carro final. El código revisado se vería así:

    {r}
    my_df <- data.frame(name = c("Wendy", "Quinn"), age = c(23, 43))
    write.table(my_df, file = "my_output_file.txt", sep = " ", col.names = FALSE, row.names = FALSE, quote = FALSE, eol = ifelse(row_number() == nrow(my_df), "", "\n"))

    Esto debería darte un archivo de salida de dos líneas en Notepad++.

Comments are closed.