我在几个工作流程后获得表格数据作为输出,此输出存储在S4Vectors::DataFrame
类中。我打算将factored列转换为整数。是的,我尝试使用as.integer
来删除因子,但我得到了一个矩阵。我希望将它们保存在DataFrame
对象中。任何人都可以指出我如何在将因子转换为整数后保留原始类类型?
我在DataFrame
中获得了这些表格数据:
(在运行DF
之前,需要安装S4Vectors
:library(S4Vectors)
)
DF <- DataFrame(
query=factor(c(7,17,15,4,7,15,13,19,4,6,13,19,6,11,17,10,11,10)),
subject=factor(c(7,17,15,4,21,21,13,13,20,20,19,19,6,11,9,1,18,10)),
score=c(4,4,7,8,11,11,12,12,13,13,13,13,15,21,38,48,49,54)
)
我试过这样的方式:
res <- sapply(DF, function(x) {
if(is.factor(x))
as.integer(x)
x
})
我的解决方案不适合我,因为res
成为矩阵,代码效率低下。我希望对此有最简单,最简短的答案(只有一行代码才能实现)。将因子列转换为整数后,我想将其保持为DataFrame
。
请注意,我有特殊原因要保留DataFrame
。我打算让解决方案尽可能简单(计算上更便宜,效率更高)。
这是我想要的输出:
desiredDF <- DataFrame(
query=as.integer(c(7,17,15,4,7,15,13,19,4,6,13,19,6,11,17,10,11,10)),
subject=as.integer(c(7,17,15,4,21,21,13,13,20,20,19,19,6,11,9,1,18,10)),
score=c(4,4,7,8,11,11,12,12,13,13,13,13,15,21,38,48,49,54)
)
如何将DF
中的因子列转换为整数,同时将它们保存在DataFrame
类中?有没有想过要做到这一点?非常感谢:)
答案 0 :(得分:0)
你很亲密
res <- data.frame(sapply(DF, function(x) {
if(is.factor(x))
as.integer(x)
x
}))