ป้องกันชื่อแถวที่จะเขียนลงไฟล์เมื่อใช้ write.csv


154

คำสั่ง:

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

ไฟล์ผลลัพธ์:

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

ฉันจะป้องกันคอลัมน์แรกที่มีดัชนีแถวไม่ให้เขียนลงไฟล์ได้อย่างไร

คำตอบ:


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

จาก?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.

12
ฉันรู้สึกละอายใจเพราะฉันลองแล้ว? write.csv แต่ ... ขอบคุณ!
watbywbarif

7
ใช่เคล็ดลับคือเข้าใจว่าคอลัมน์นี้แสดงชื่อแถว
Vanuan

บางทีเราควรเปลี่ยนชื่อสิ่งนี้
stephanmg

5

เพื่อความสมบูรณ์write_csv()จากreadrแพ็กเกจนั้นเร็วกว่าและไม่เคยเขียนชื่อแถว

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

หากคุณต้องการเขียนข้อมูลขนาดใหญ่ให้ใช้fwrite()จากdata.tableแพ็คเกจ มันเร็วกว่าทั้งสองwrite.csvและwrite_csv

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

ด้านล่างเป็นเกณฑ์มาตรฐานที่ Edouard เผยแพร่บนเว็บไซต์ของเขา

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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.