2015-05-08 8 views
14

मैं और -Infinity को RPostgreSQL का उपयोग करते समय पोस्टर्रेसक्ल की क्षमता को समय-समय पर डेटा लाने के लिए उपयोग करने का सबसे अच्छा तरीका जानने का प्रयास कर रहा था। आर में अनंत तिथियों का प्रतिनिधित्व करने की कोशिश करते समय मुझे कुछ अजीब व्यवहार मिला। ।अनंतता की तिथियां एनएएस की तरह क्यों दिखती हैं लेकिन तिथियों की तरह कार्य करती हैं?

मैं निम्नलिखित तरीके से नकारात्मक और सकारात्मक अनंत पर एक तारीख बनाने का प्रयास कर सकते हैं:

❥ as.Date(-1/0, origin="1970-01-01") 
[1] NA 
❥ as.Date(1/0, origin="1970-01-01") 
[1] NA 

वे दोनों NAS दिखाई देते हैं। हालांकि, उनकी तुलना करते समय, ऐसा लगता है कि एक दूसरे से कम है।

❥ as.Date(-1/0, origin="1970-01-01") < as.Date(1/0, origin="1970-01-01") 
[1] TRUE 
❥ as.Date(-1/0, origin="1970-01-01") > as.Date(1/0, origin="1970-01-01") 
[1] FALSE 
❥ as.Date(1/0, origin="1970-01-01") > as.Date("1970-01-01") 
[1] TRUE 
❥ as.Date(1/0, origin="1970-01-01") < as.Date("1970-01-01") 
[1] FALSE 

आर दोनों अंतर को कैसे जानते हैं, यदि वे दोनों एनए में परिवर्तित हो जाते हैं?

+0

मैं आर पर एक विशेषज्ञ नहीं हूं लेकिन मेरा अनुमान है कि इन्हें आंतरिक मामलों के रूप में आंतरिक रूप से दर्शाया जाता है और आप हमेशा यह कहकर आसानी से तुलना कर सकते हैं कि सब कुछ बाद में है - अनंत (दिनांक) और सबकुछ अनंत (दिनांक) से पहले है। अधिकांश प्रोग्रामिंग भाषाएं ऐसे मानों को विशेष मामलों के रूप में मानती हैं (वैसे भी ऑब्जेक्ट्स के रूप में)। –

उत्तर

13

वे NA में परिवर्तित नहीं होते हैं, यही वह तरीका है जिसे वे मुद्रित करते हैं।

R> d <- as.Date(-Inf, origin="1970-01-01") 
R> is.na(d) 
# [1] FALSE 
R> is.infinite(d) 
# [1] TRUE 

आप उन्हें अलग तरह से प्रिंट करना चाहते हैं, तो आप print.Date विधि ओवरराइड और +/- अनंत के लिए विशेष मामलों में जोड़ सकते हैं।

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