2015-01-07 183 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