将所有类型为factor的列更改为numeric

21

我有一个100 X 100的数据框。其中有30列是分类变量。是否有方法可以仅将分类变量转换为数值类型,而不影响其他列(而不需要使用循环)?

2个回答

27

应用来自 Carl Witthoft 的智慧:

asNumeric <- function(x) as.numeric(as.character(x))
factorsNumeric <- function(d) modifyList(d, lapply(d[, sapply(d, is.factor)],   
                                                   asNumeric))

示例:

d <- data.frame(x=factor(1:3), y=factor(2:4), z=factor(3:5),
                r=c("a", "b", "c"), stringsAsFactors=FALSE)
> f <- factorsNumeric(d)
> class(f$x)
[1] "numeric"
> class(f$r)
[1] "character"

20

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接