Evite que los nombres de fila se escriban en el archivo cuando use write.csv

154

Comandos:

t <- data.frame(v = 5:1, v2 = 9:5)
write.csv(t, "t.csv")

Archivo resultante:

# "","v","v2"
# "1",5,9
# "2",4,8
# "3",3,7
# "4",2,6
# "5",1,5

¿Cómo evito que la primera columna con índice de fila se escriba en el archivo?

watbywbarif
fuente

Respuestas:

291
write.csv(t, "t.csv", row.names=FALSE)

De ?write.csv:

row.names: either a logical value indicating whether the row names of
          ‘x’ are to be written along with ‘x’, or a character vector
          of row names to be written.
NPE
fuente
12
Me da vergüenza porque lo intenté? Write.csv pero ... ¡Gracias aix!
watbywbarif
77
Sí, el truco es entender que esta columna representa los nombres de las filas.
Vanuan
Tal vez uno debería cambiar el nombre de esto.
stephanmg
5

Para completar, write_csv()desde el readrpaquete es más rápido y nunca escribe nombres de fila

# install.packages('readr', dependencies = TRUE)
library(readr)
write_csv(t, "t.csv")

Si necesita escribir datos grandes, utilícelos fwrite()desde el data.tablepaquete. Es mucho más rápido que ambos write.csvywrite_csv

# install.packages('data.table')
library(data.table)
fwrite(t, "t.csv")

A continuación se muestra un punto de referencia que Edouard publicó en su sitio.

microbenchmark(write.csv(data, "baseR_file.csv", row.names = F),
               write_csv(data, "readr_file.csv"),
               fwrite(data, "datatable_file.csv"),
               times = 10, unit = "s")

## Unit: seconds
##                                              expr        min         lq       mean     median         uq        max neval
##  write.csv(data, "baseR_file.csv", row.names = F) 13.8066424 13.8248250 13.9118324 13.8776993 13.9269675 14.3241311    10
##                 write_csv(data, "readr_file.csv")  3.6742610  3.7999409  3.8572456  3.8690681  3.8991995  4.0637453    10
##                fwrite(data, "datatable_file.csv")  0.3976728  0.4014872  0.4097876  0.4061506  0.4159007  0.4355469    10
Tung
fuente