2015-01-07 30 views
0

我中的R的函数打开因素数字:R于数据帧列应用功能

as.numeric.factor <- function(x) {as.numeric(levels(x))[x]} 

和我有一个由两个因素,数字和其它类型的数据的数据帧一个。 我想在整个数据框上一次应用上述函数,将所有因子转换为数字类型列。 有什么想法? 谢谢

回答

0

一种选择是:

dat[] <- lapply(dat, function(x) if(is.factor(x)) as.numeric(levels(x))[x] else x) 
0

您可以检查列是否为factor或者不是is.factorsapply。使用它作为索引来过滤掉这些列,并通过lapply循环中的as.numeric.factor函数将列转换为“数字”。

indx <- sapply(dat, is.factor) 
dat[indx] <- lapply(dat[indx], as.numeric.factor) 

你也可以应用功能不使用子集(但如果将它放在一个子集,会更快)

为了防止列转换为“因素”,你可以指定stringsAsFactors=FALSE参数或colClasses参数在read.table/read.csv范围内,我会想象这些列至少有一个非数字组件,它在读取数据集时自动将其转换为factor