स्पेस ट्रेस करने के लिए डेटाटेबल राइटराइट करें

Jan 10 2021

मुझे डिमाइटर के रूप में फ़्रेड के उपयोग से समस्या हो रही है और रिक्त मानों को अंतरित किया जा रहा है। उदाहरण के लिए, यह:

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

इसके साथ असफलता विफल हो जाती है: "लाइन पर जल्दी रुकने वाला। अपेक्षित 3 फ़ील्ड लेकिन पाया गया 2." समस्या यह है कि मध्य स्तंभ में NA मान के साथ, fwrite मान देता है | स्थान | स्थान | मान, तो भय बीच में निहित रिक्त मान को नहीं पहचानता है।

मैं समझता हूं कि पहली बार एक और परिसीमन का उपयोग करना सरल होगा। हालांकि, क्या यहां मूल डीटी को पुन: पेश करने के लिए फ़्रेड प्राप्त करना संभव है?

एक रीड-साइड समाधान के साथ संपादित करें :

मुझे यहाँ वही प्रश्न मिला । यह थोड़ा भ्रमित करने वाला है क्योंकि यह एक समाधान देता है, लेकिन फिर बाद में समाधान ने काम करना बंद कर दिया। कुछ अन्य का पीछा करने पर मैं अब तक पढ़े-लिखे समाधान के साथ सबसे निकट पहुँच गया हूँ (जैसे) एक यूनिक्स कमांड के साथ है:

dt <- fread(cmd="wsl sed -r 's/ /,/g' dt.csv") #converts spaces to commas on the way in

विंडोज 10 पर मुझे यूनिक्स कमांड चलाने के लिए अपने सिस्टम को प्राप्त करने के लिए कुछ परीक्षण और त्रुटि करनी पड़ी। "Wsl" भाग सिस्टम पर निर्भर करता है। यह वीडियो मददगार था, और मैंने पहली विधि का उपयोग किया जो उसने वहां वर्णित किया। यह और यह सवाल फ़्रेड के साथ सेड पर थोड़ा अधिक प्रदान करता है। उत्तरार्द्ध का कहना है कि sed, rTools के साथ आता है, हालांकि मैंने यह कोशिश नहीं की।

जवाब

1 Billy34 Jan 10 2021 at 02:32

हो सकता 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