2010-10-27 17 views
5

से शून्य मान पढ़ें मुझे NULL मान वाली फ़ाइल से डेटा फ्रेम पढ़ने की आवश्यकता है।फ़ाइल

> is.null(df$floatCol[2]) 
[1] FALSE 

कैसे करना चाहिए:

> df <- read.table('example.dat', header=TRUE) 

लेकिन "शून्य" प्रविष्टियों शून्य के रूप में आर से व्याख्या नहीं कर रहे हैं:

 
charCol floatCol intCol 
a  1.5  10 
b  NULL  3 
c  3.9  NULL 
d  -3.4  4 

मैं एक डेटा फ्रेम में इस फ़ाइल पढ़ें: यहाँ एक उदाहरण फ़ाइल है मैं अपनी इनपुट फ़ाइल को प्रारूपित करता हूं ताकि आर ठीक तरह से ऐसी प्रविष्टियों को न्यूल के रूप में मान सके?

उत्तर

8

हमेशा अगर कुछ अप्रत्याशित है हमेशा हमेशा सारांश (बात) से करते हैं।

> summary(df) 
charCol floatCol intCol 
a:1  1.5 :1 10 :1 
b:1  -3.4:1 3 :1 
c:1  3.9 :1 4 :1 
d:1  NULL:1 NULL:1 

जो थोड़ा अजीब दिखता है। ड्रिल डाउन:

> summary(df$floatCol) 
1.5 -3.4 3.9 NULL 
    1 1 1 1 

यह बिल्ली क्या है?

> class(df$floatCol) 
[1] "factor" 

गलत सांख्यिक फ़ॉर्मेट (स्ट्रिंग 'शून्य') की उपस्थिति आर "जाने के लिए ओह मुझे लगता है कि इन नंबरों नहीं हैं कारण बना हुआ है, मैं उन्हें चरित्र स्ट्रिंग में पढ़ सकते हैं और एक कारक (बनाने के स्पष्ट करेंगे परिवर्तनीय) आपके लिए "।

समाधान को अभी na.string = "NULL" का उपयोग करने के लिए पोस्ट किया गया है, लेकिन याद रखें कि एनए में एनयूएल के समान नहीं है, एनए अनुपलब्ध डेटा के लिए एक मार्कर है, एनयूएलएल एक वास्तविक गैर-मूल्य है। की तुलना करें:

> c(1,2,3,NULL,4) 
[1] 1 2 3 4 
> c(1,2,3,NA,4) 
[1] 1 2 3 NA 4 

एक बार जब आप सही ढंग से इसे पढ़ने के बाद, उचित परीक्षण आमतौर पर is.na (foo)

+0

+1 यह इंगित करने के लिए कि यह नहीं हो सकता है। – mbq

-2

मैंने आर में कभी भी कुछ नहीं किया है, लेकिन मुझे लगता है कि आपके चर के पास "न्यूल" मान है, इसलिए यह जांचने का प्रयास करें कि चर के बजाय स्ट्रिंग "न्यूल" के बराबर है या नहीं। यदि आपको is.null() विधि का उपयोग करना है, तो आप अपने चर के माध्यम से जा सकते हैं और "NULL" को NULL में परिवर्तित कर सकते हैं।

+1

आर में है, वहाँ 'NA' (लंबाई 1) और' के बीच एक महत्वपूर्ण अलग है नल' (लंबाई 0)। – hadley

6

इस प्रयास करें:

> Lines <- "charCol floatCol intCol 
+ a  1.5  10 
+ b  NULL  3 
+ c  3.9  NULL 
+ d  -3.4  4" 
> 
> # DF <- read.table("myfile", header = TRUE, na.strings = "NULL") 
> DF <- read.table(textConnection(Lines), header = TRUE, na.strings = "NULL") 
> DF 
    charCol floatCol intCol 
1  a  1.5  10 
2  b  NA  3 
3  c  3.9  NA 
4  d  -3.4  4