मैं दिनांक वेक्टर में हेरफेर करने के लिए ifelse()
फ़ंक्शन का उपयोग कर रहा हूं। मुझे उम्मीद है कि परिणाम Date
वर्ग का होगा, और numeric
वेक्टर प्राप्त करने के लिए आश्चर्यचकित था।ifelse() को तारीख वस्तुओं को संख्यात्मक वस्तुओं में बदलने से कैसे रोकें
dates <- as.Date(c('2011-01-01', '2011-01-02', '2011-01-03', '2011-01-04', '2011-01-05'))
dates <- ifelse(dates == '2011-01-01', dates - 1, dates)
str(dates)
यह विशेष रूप से आश्चर्य की बात है क्योंकि पूरी सदिश भर में कार्रवाई करते एक Date
ऑब्जेक्ट है: यहाँ एक उदाहरण है।
dates <- as.Date(c('2011-01-01', '2011-01-02', '2011-01-03', '2011-01-04','2011-01-05'))
dates <- dates - 1
str(dates)
मैं Date
वैक्टर पर संचालित करने के लिए कुछ अन्य फ़ंक्शन का उपयोग किया जाना चाहिए? यदि हां, तो क्या कार्य? यदि नहीं, तो इनपुट के समान प्रकार के वेक्टर को वापस करने के लिए मैं ifelse
को कैसे बल दूं?
ifelse
के लिए सहायता पृष्ठ इंगित करता है कि यह एक सुविधा है, एक बग नहीं है, लेकिन मैं अभी भी आश्चर्यजनक व्यवहार के लिए एक स्पष्टीकरण खोजने के लिए संघर्ष कर रहा हूं।
अब एक समारोह 'if_else()' dplyr पैकेज है कि 'ifelse' के लिए स्थानापन्न कर सकते हैं दिनांक वस्तुओं की सही वर्गों को बनाए रखते हुए में है - यह हालिया उत्तर के रूप में [नीचे पोस्ट किया गया है) (http://stackoverflow.com/a/38093096/4470365)। मैं यहां इस पर ध्यान दे रहा हूं क्योंकि यह एक समस्या प्रदान करके इस समस्या को हल करता है जो यूनिट-परीक्षण और एक सीआरएएन पैकेज में प्रलेखित है, कई अन्य उत्तरों के विपरीत (इस टिप्पणी के रूप में) इसके आगे रैंक किए गए थे। –