2013-03-16 6 views
9

मैं फ़ंक्शन data.table पैकेज से एक समस्या में भाग गया। मुझे पता है कि यह अभी भी प्रयोगात्मक है, लेकिन शायद मैं कहीं कुछ गलती कर रहा हूं।फ्रेड द्वारा पंक्ति.नाम के साथ सीएसवी पढ़ना()

यहाँ प्रतिलिपि प्रस्तुत करने योग्य उदाहरण है:

library(data.table) 
test <- data.frame(a=rnorm(300), b=rnorm(300)) 
write.csv(test,"a.csv") 
fread("a.csv") 

एक त्रुटि देता है:

Error in rbindlist(allargs) : 
    Item 2 has 2 columns, inconsistent with item 1 which has 3 columns 

और पक्ष सवाल: क्यों मैं कभी write.csv प्रश्न में row.names=TRUE छोड़ देना चाहिए? अब तक मुझे केवल समस्याएं थीं क्योंकि यह डेटा में एक अनाम कॉलम जोड़ती है।

Thx।

उत्तर

7

एक समाधान आप एक नया स्तंभ के रूप में rownames पढ़ सकते हैं, के रूप में fread की मदद से header=FALSE

fread("a.csv",header=FALSE) 
header' changed by user from 'auto' to FALSE 
     V1     V2     V3 
    1:      a     b 
    2: 1 -1.55640470495795 -1.344760319214 
    3: 2 2.89752713867643 2.48413035874463 
    4: 3 -0.493990961968582 0.119727513514055 
    5: 4 0.559770137546773 1.07420769675405 
---           
297: 296 0.585750601363698 -1.59845801200953 
298: 297 -0.867339301988422 0.776738489388772 
299: 298 0.0942821874550108 -0.649440075398178 
300: 299 -0.308039637386426 -0.840171787291445 
301: 300 0.358526722813896 -1.362322309472 

की स्थापना करके, ऐसा लगता है कि सभी उदाहरण row.names=FALSE उपयोग कर रहे हैं, तो के रूप में आप इस काम करता है का उल्लेख किया है ठीक है:

write.csv(test,"b.csv",row.names=FALSE) 
fread("b.csv") 
+2

और 'row.names = TRUE' की उपयोगिता के बारे में क्या? :) – krhlk

+1

अच्छा सवाल @tomaskrehlik :) व्यक्तिगत रूप से मैं .. उसका उपयोग नहीं करते ... शायद फ़ाइल का मानव पठनीयता के लिए – agstudy

+2

@tomaskrehlik agstudy जैसे कि मैंने rownames या तो वास्तव में उपयोग नहीं करते। पूर्णता के लिए मैंने उनसे निपटने के लिए एक टोडो आइटम जोड़ा है और इस प्रश्न पर एक लिंक वापस जोड़ा है। हाइलाइट करने के लिए धन्यवाद। –

संबंधित मुद्दे