R data.table fwrite เพื่อเฟดตัวคั่นพื้นที่และว่างเปล่า
ฉันมีปัญหาในการใช้ fread ที่มี "" เป็นตัวคั่นและค่าว่างที่สลับกัน ตัวอย่างเช่นสิ่งนี้:
dt <- data.table(1:5,1:5,1:5) #make a simple table
dt[3,"V2" := NA] #add a blank in the middle to illustrate the problem
fwrite(dt, file = "dt.csv", sep = " ") #save to file
dt <- fread("dt.csv", sep = " ") #try to retrieve
Fread ล้มเหลวด้วย: "หยุดก่อนบรรทัดที่ 4 ต้องการ 3 ฟิลด์ แต่พบ 2" ปัญหาน่าจะเกิดจากค่า NA ในคอลัมน์กลาง fwrite จะให้ค่า | space | space | value จากนั้น fread จะไม่รู้จักค่าว่างโดยนัยที่อยู่ตรงกลาง
ฉันเข้าใจว่าการใช้ตัวคั่นอื่นในตอนแรกนั้นเป็นเรื่องง่าย อย่างไรก็ตามเป็นไปได้ไหมที่จะเกิดความกลัวในการสร้าง dt ต้นฉบับที่นี่?
แก้ไขด้วยโซลูชันด้านการอ่าน :
ผมพบว่าคำถามเดียวกันที่นี่ ค่อนข้างสับสนเพราะให้วิธีแก้ปัญหา แต่หลังจากนั้นวิธีแก้ปัญหาก็หยุดทำงานในภายหลัง ในการติดตามโอกาสในการขายอื่น ๆ สิ่งที่ใกล้เคียงที่สุดตอนนี้ฉันพบกับโซลูชันด้านการอ่านด้วย fread () ด้วยคำสั่ง Unix ดังนี้:
dt <- fread(cmd="wsl sed -r 's/ /,/g' dt.csv") #converts spaces to commas on the way in
ใน Windows 10 ฉันต้องลองผิดลองถูกเพื่อให้ระบบของฉันเรียกใช้คำสั่ง Unix ส่วน "wsl" ดูเหมือนจะขึ้นอยู่กับระบบ วิดีโอนี้มีประโยชน์และฉันใช้วิธีแรกที่เขาอธิบายไว้ที่นั่น นี้และนี้คำถามให้มากขึ้นอีกนิดใน sed กับ fread หลังกล่าวว่า sed มาพร้อมกับ rTools แม้ว่าฉันจะไม่ได้ลอง
คำตอบ
อาจส่งออกNA
เป็นอย่างอื่นนอกเหนือ""
จากค่าเริ่มต้น
ที่นี่ฉันใช้ @
library(data.table)
dt <- data.table(1:5,1:5,1:5) #make a simple table
dt[3,"V2" := NA] #add a blank in the middle to illustrate the problem
fwrite(dt, file = "dt.csv", sep = " ", na="@") #save to file
dt <- fread("dt.csv", sep = " ",na.strings = "@") #try to retrieve