จะบันทึก data.frame ใน R ได้อย่างไร?


137

ฉันสร้าง data.frame ใน R ที่ไม่ใหญ่มาก แต่ใช้เวลาค่อนข้างนานในการสร้าง ฉันต้องการบันทึกเป็นไฟล์ซึ่งสามารถเปิดได้มากกว่าใน R อีกครั้ง?

คำตอบ:


176

มีหลายวิธี วิธีหนึ่งคือการใช้save()เพื่อบันทึกวัตถุที่แน่นอน เช่นสำหรับ data frame foo:

save(foo,file="data.Rda")

จากนั้นโหลดด้วย:

load("data.Rda")

คุณสามารถใช้write.table()หรืออะไรทำนองนั้นเพื่อบันทึกตารางเป็นข้อความธรรมดาหรือdput()รับรหัส R เพื่อสร้างตาราง


2
นอกจากนี้ยังมีdumpและไฟล์ที่สร้างขึ้นจะเป็นsource()-ed แม้ว่าhelp(dump)หน้าระบุว่าsave"ปลอดภัย"
IRTFM

4
ฉันชอบเก็บข้อมูลเป็นข้อความธรรมดาเสมอดังนั้นฉันจึงชอบdump()มากกว่าsave()และwrite.table()มากกว่าdump()
Sacha Epskamp

ฉันถูกต้อง write.table ที่จะไม่รักษาสิ่งที่ต้องการมีการตั้งค่าคอลัมน์ 0 และ 1 เป็นปัจจัย แต่ที่save()/ load()จะ? ถ้าเป็นเช่นนั้นก็เป็นสิ่งที่ต้องคำนึงถึงเช่นกัน ฉันมักจะมีส่วนของการประมวลผลไฟล์. csv บางส่วนและเมื่อฉันได้ไฟล์เหล่านั้นในตำแหน่งที่ฉันชอบฉันชอบที่จะบันทึกไว้ดังนั้นฉันจึงไม่จำเป็นต้องเรียกใช้รหัสนั้นซ้ำทุกครั้งที่ฉันเยี่ยมชมโครงการของฉันอีกครั้ง ดังนั้นการรักษางาน / ปรับแต่งโครงสร้างนั้นเป็นสิ่งสำคัญที่ต้องพิจารณา
Hendy

4
ใช่. dump()ยังช่วยประหยัดโครงสร้าง สิ่งที่ดีเกี่ยวกับwrite.tableมันคือการเขียนตารางในหลาย ๆ ทางที่ซอฟต์แวร์สามารถนำเข้า
Sacha Epskamp

2
สิ่งนี้บันทึกได้มากกว่าแค่ชื่อไฟล์ ดูที่saveRDSการบันทึก dataframe ที่ไม่มีชื่อ (dhendrickson มีคำตอบสำหรับสิ่งนั้น)
PatrickT

91

หากคุณเป็นเพียงการประหยัดวัตถุเดียว (กรอบข้อมูลของคุณ) saveRDSคุณยังสามารถใช้
เพื่อบันทึก:

saveRDS(foo, file="data.Rda")

จากนั้นอ่านด้วย:

bar <- readRDS(file="data.Rda")

ความแตกต่างระหว่างsaveRDSและsaveคือในอดีตวัตถุเดียวเท่านั้นที่สามารถบันทึกและชื่อของวัตถุจะไม่ถูกบังคับให้เหมือนกันหลังจากที่คุณโหลด


1

ให้เราบอกว่าคุณมีกรอบข้อมูลที่คุณสร้างขึ้นและตั้งชื่อว่า "Data_output" คุณสามารถส่งออกไปยังไดเรกทอรีเดียวกันโดยใช้ไวยากรณ์ต่อไปนี้

write.csv (Data_output, "output.csv", row.names = F, อัญประกาศ = F)

ขอมอบเครดิตให้กับ Peter และ Ilja, UMCG, เนเธอร์แลนด์

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