对于尝试将因子转换为数字并将其保留为数据帧的glm2包

时间:2016-10-30 00:35:36

标签: r dataframe lapply glm

在R中使用包glm2mlbench,我正在使用BreastCancer数据集进行测试。我从数据框中的10列开始,有479个观察结果。

我想将10个列中的9个从因子转换为数字并保留数据帧,但我的新数据帧变成了2列而不是10列的数据帧?

这是我的代码

library(mlbench)
library(glm2)
data(BreastCancer)
BC = na.omit(BreastCancer)
BC = BC[, -1]
indexes = sample(1:nrow(BC), size=0.3*nrow(BC))
BCtrain = BC[-indexes,]

as.numeric.factor <- function(x) as.numeric(levels(x))[x]
BCtrain_x <- lapply(BCtrain[, -which(names(BCtrain) %in%  c("Class"))], as.numeric.factor)
BCtrain_x <- as.data.frame(rbind(BCtrain_x, BCtrain$Class))

1 个答案:

答案 0 :(得分:1)

替换你的最后一行

BCtrain_x <- as.data.frame(rbind(BCtrain_x,BCtrain$Class))

BCtrain_x <- cbind.data.frame(BCtrain_x, BCtrain["Class"])

然后你会变得金黄。

dim(BCtrain_x)
# [1] 419 10

unlist(lapply(BCtrain_x, class))
#   Cl.thickness       Cell.size      Cell.shape   Marg.adhesion    Epith.c.size 
#      "numeric"       "numeric"       "numeric"       "numeric"       "numeric" 
#    Bare.nuclei     Bl.cromatin Normal.nucleoli         Mitoses           Class 
#      "numeric"       "numeric"       "numeric"       "numeric"        "factor"