Saya punya masalah menggunakan data.table: Bagaimana cara mengonversi kelas kolom? Berikut ini contoh sederhananya: Dengan data.frame saya tidak memiliki masalah untuk mengubahnya, dengan data.table saya tidak tahu caranya:
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)
Apakah saya melewatkan sesuatu yang jelas di sini?
Pembaruan karena posting Matthew: Saya menggunakan versi yang lebih lama sebelumnya, tetapi bahkan setelah memperbarui ke 1.6.6 (versi yang saya gunakan sekarang) saya masih mendapatkan kesalahan.
Pembaruan 2: Katakanlah saya ingin mengonversi setiap kolom dari kelas "faktor" ke kolom "karakter", tetapi tidak tahu sebelumnya kolom mana dari kelas yang mana. Dengan data.frame, saya dapat melakukan hal berikut:
classes <- as.character(sapply(df, class))
colClasses <- which(classes=="factor")
df[, colClasses] <- sapply(df[, colClasses], as.character)
Bisakah saya melakukan sesuatu yang serupa dengan data.table?
Pembaruan 3:
sessionInfo () R versi 2.13.1 (2011-07-08) Platform: x86_64-pc-mingw32 / x64 (64-bit)
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
. Tetap +1. Saya tidak mendapatkan kesalahan apa pun, versi mana yang Anda miliki? Ada masalah di area ini meskipun, ini telah diangkat sebelumnya, FR # 1224 dan FR # 1493 adalah prioritas tinggi untuk diatasi. Namun, jawaban Andrie adalah cara terbaik.
invalid times argument
kesalahan itu? Bekerja dengan baik untuk saya. Versi mana yang kamu punya
data.table
metode berbeda dari yang ada untukdata.frame