2010-03-20 7 views
7

के वेक्टर पर sapply का उपयोग करना मेरे पास एक बहुत ही सरल सवाल हो सकता है। मैं डेटा फ्रेम से POSIXct ऑब्जेक्ट्स के कॉलम को संसाधित करना चाहता हूं और डेटाटाइम स्ट्रिंग का वेक्टर उत्पन्न करना चाहता हूं। मैंने निम्नलिखित sapply कॉलPOSIXct

dt <- sapply(df$datetime, function(x) format(x,"%Y-%m-%dT%H:%M:%S")) 

का उपयोग करने की कोशिश की लेकिन इसका कोई फायदा नहीं हुआ। मुझे निम्न त्रुटि मिल रही है:

> Error in prettyNum(.Internal(format(x, trim, digits, nsmall, width, 3L, : 
invalid 'trim' argument 

जब मैं कॉलम से एक एकल POSIXct ऑब्जेक्ट पर इस फ़ंक्शन को लागू करता हूं, तो मुझे कोई समस्या नहीं है। इसलिए मैं इस समय फंस गया हूं कि समस्या क्या है। क्या मुझे POSIXct ऑब्जेक्ट्स के साथ कुछ खास करने की ज़रूरत है?

+0

@Chris से ऊपर की विधि का उपयोग करें, कुछ मामूली संपादन किए। यदि आप जो भी किया है, उस पर आप ऑब्जेक्ट करते हैं तो कृपया रोलबैक के लिए स्वतंत्र महसूस करें। सादर। – bernie

+0

धन्यवाद एडम। अपनी स्पष्टीकरण की सराहना करें। – Chris

उत्तर

12

format() वेक्टर तर्क लेगा, इसलिए format(df$datetime,"%Y-%m-%dT%H:%M:%S") आपको जो चाहिए वह करना चाहिए।

जब आप sapply का उपयोग करते हैं, तो आपकी ऑब्जेक्ट्स संख्यात्मक के लिए मजबूर होती हैं, और इसलिए गलत स्वरूप विधि लागू की जा रही है। sapply(df$datetime, function(x) format(as.POSIXct(x, origin="1970-01-01"),"%Y-%m-%dT%H:%M:%S")) का उपयोग कर आप उन्हें POSIXct पर वापस भेज सकते हैं, लेकिन जब तक आपके पास apply का उपयोग करने का कोई विशेष कारण न हो, तो

+0

बहुत धन्यवाद लियो! वास्तव में बहुत सरल जवाब। – Chris

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