2016-10-28 49 views
2

是否可以使用data.table的“in-place”方法将我的因子列X转换为逻辑列?将data.table转换因子转换为逻辑

myDT <- data.table(X = factor(c("true", "false"))) 
str(myDT) 

myDT[, X := as.logical(X)] # does not work 

myDT[, X := as.logical(as.character(X))] # does not work either 

# but this does 
myDT[, X := as.character(X)] 
myDT[, X := as.logical(X)] 
str(myDT) 

回答

3

更新您的data.table安装;这是一个从版本1.9.8开始修复的bug,现在factor可以直接转换为logical

library(data.table) 
myDT[, X:= X=="true"] 
str(myDT) 
#Classes ‘data.table’ and 'data.frame': 2 obs. of 1 variable: 
# $ X: logi TRUE FALSE