में मैं डेटाटेबल कोल्स का एक सबसेट एक नई कक्षा में कनवर्ट करना चाहता हूं। यहाँ एक लोकप्रिय सवाल है (Convert column classes in data.table) लेकिन उत्तर स्टार्टर ऑब्जेक्ट पर काम करने के बजाए एक नई वस्तु बनाता है।कनवर्ट करें * कुछ * कॉलम क्लासेस डेटा.table
dat <- data.frame(ID=c(rep("A", 5), rep("B",5)), Quarter=c(1:5, 1:5), value=rnorm(10))
cols <- c('ID', 'Quarter')
कैसे सबसे अच्छा (जैसे) एक कारक के लिए सिर्फ cols
कॉलम में बदलने के लिए:
इस उदाहरण लें? एक सामान्य data.frame में आप ऐसा कर सकता है:
dat[, cols] <- lapply(dat[, cols], factor)
लेकिन यह एक data.table लिए काम नहीं करता है, और न तो इस
dat[, .SD := lapply(.SD, factor), .SDcols = cols]
मैट Dowle से जुड़ा हुआ प्रश्न में एक टिप्पणी करता है (दिसंबर 2013 से) निम्नलिखित का सुझाव देता है, जो ठीक काम करता है, लेकिन थोड़ा कम सुरुचिपूर्ण लगता है।
for (j in cols) set(dat, j = j, value = factor(dat[[j]]))
वर्तमान में एक बेहतर data.table जवाब है (अर्थात कम + एक काउंटर चर उत्पन्न नहीं करता है), या मैं बस के ऊपर स्थित + rm(j)
इस्तेमाल करना चाहिए?
मेरा मानना है कि विधि मैट Dowle सिफारिश की गई है सबसे अच्छा होगा। वह, सब के बाद, * data.table * लेखक है। –
यह सच है, लेकिन टिप्पणी 2013 से था और उसके बाद से कई पैकेज अपडेट कर दिया गया है, तो मैं यह सोचा 'के लिए (...) सेट (...) पर बाहर – arvi1000
अधिक विस्तार इस मछली पकड़ने की लाइन फेंकने लायक' मुहावरा जोड़ा हाल ही में यहां: http://stackoverflow.com/a/33000778/403310 –