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)
여기서 분명한 것이 놓치고 있습니까?
Matthew의 게시물로 인한 업데이트 : 이전에 이전 버전을 사용했지만 1.6.6 (지금 사용중인 버전)으로 업데이트 한 후에도 여전히 오류가 발생합니다.
업데이트 2 : "인자"클래스의 모든 열을 "문자"열로 변환하고 싶지만 어떤 열이 어떤 클래스에 속하는지 미리 모른다고 가정 해 보겠습니다. data.frame을 사용하여 다음을 수행 할 수 있습니다.
classes <- as.character(sapply(df, class))
colClasses <- which(classes=="factor")
df[, colClasses] <- sapply(df[, colClasses], as.character)
data.table과 비슷한 일을 할 수 있습니까?
업데이트 3 :
sessionInfo () R 버전 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 이 우선적으로 처리됩니다. 하지만 Andrie의 대답이 가장 좋은 방법입니다.
invalid times argument
오류 에 대해 확신 합니까? 나를 위해 잘 작동합니다. 어떤 버전이 있습니까?
data.table
방법은 그들이보다 다른data.frame