मुझे data.table का उपयोग करने में समस्या है: मैं कॉलम कक्षाएं कैसे परिवर्तित करूं? यहाँ एक सरल उदाहरण है: data.frame के साथ मुझे इसे परिवर्तित करने में कोई समस्या नहीं है, data.table के साथ मुझे अभी नहीं पता है कि:
df <- data.frame(ID=c(rep("A", 5), rep("B",5)), Quarter=c(1:5, 1:5), value=rnorm(10))
#One way: http://stackoverflow.com/questions/2851015/r-convert-data-frame-columns-from-factors-to-characters
df <- data.frame(lapply(df, as.character), stringsAsFactors=FALSE)
#Another way
df[, "value"] <- as.numeric(df[, "value"])
library(data.table)
dt <- data.table(ID=c(rep("A", 5), rep("B",5)), Quarter=c(1:5, 1:5), value=rnorm(10))
dt <- data.table(lapply(dt, as.character), stringsAsFactors=FALSE)
#Error in rep("", ncol(xi)) : invalid 'times' argument
#Produces error, does data.table not have the option stringsAsFactors?
dt[, "ID", with=FALSE] <- as.character(dt[, "ID", with=FALSE])
#Produces error: Error in `[<-.data.table`(`*tmp*`, , "ID", with = FALSE, value = "c(1, 1, 1, 1, 1, 2, 2, 2, 2, 2)") :
#unused argument(s) (with = FALSE)
क्या मुझे यहाँ कुछ स्पष्ट याद आ रहा है?
मैथ्यू के पोस्ट के कारण अपडेट करें: मैंने पहले एक पुराने संस्करण का उपयोग किया था, लेकिन 1.6.6 (अब मैं जिस संस्करण का उपयोग करता हूं) को अपडेट करने के बाद भी मुझे एक त्रुटि मिलती है।
अद्यतन 2: मान लीजिए कि मैं कक्षा "कारक" के हर कॉलम को "वर्ण" कॉलम में परिवर्तित करना चाहता हूं, लेकिन पहले से नहीं जानता कि कौन सा कॉलम किस वर्ग का है। डेटा.फ्रेम के साथ, मैं निम्नलिखित कर सकता हूं:
classes <- as.character(sapply(df, class))
colClasses <- which(classes=="factor")
df[, colClasses] <- sapply(df[, colClasses], as.character)
क्या मैं data.table के साथ कुछ ऐसा कर सकता हूं?
अपडेट 3:
sessionInfo () आर संस्करण 2.13.1 (2011-07-08) प्लेटफार्म: x86_64-pc-mingw32 / x64 (64-बिट)
locale:
[1] C
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] data.table_1.6.6
loaded via a namespace (and not attached):
[1] tools_2.13.1
#Produces error। वैसे भी +1। मुझे कोई त्रुटि नहीं है, आपके पास कौन सा संस्करण है? इस क्षेत्र में एक समस्या है, हालांकि, इसे पहले उठाया गया है, FR # 1224 और FR # 1493 को संबोधित करने के लिए उच्च प्राथमिकता है। एंड्री का जवाब सबसे अच्छा तरीका है, हालांकि।
invalid times argumentत्रुटि के बारे में निश्चित हैं ? मेरे लिए ठीक काम करो। आपके पास कौन सा संस्करण है?
data.tableतरीकों में "[" ऑपरेटर तर्क अलग-अलग हैं, जैसे कि उनके लिएdata.frame