将整个数据帧中的向量强制转换为R中的适当类

时间:2015-01-30 16:41:42

标签: r

我有一个包含大约3000列的大型数据框。每列都是一个因素 - 但有些是概念上的数字。

我写了这个快速for循环来转换相应的列,但它似乎没有像我想象的那样工作。基本上,我检查并查看是否将向量强制转换为数字结果,该向量的平均值为NaN,如果不是,则继续将向量强制转换为数字,否则将其强制转换为字符。

以下是代码:

 for (i in 1:length(data)) {
     ifelse(!is.nan(mean(as.numeric(as.character(data[,i])), na.rm=TRUE)), 
     as.numeric(as.character(data[,i])), as.character(data[,i])
      )  
 }

问题在于它不会改变我的数据。

1 个答案:

答案 0 :(得分:3)

我假设您有一个包含字符列的data.frame:

DF <- lapply(iris, as.character)
sapply(DF, class)
#Sepal.Length  Sepal.Width Petal.Length  Petal.Width      Species 
# "character"  "character"  "character"  "character"  "character"

然后您可以使用type.convert

DF <- lapply(DF, type.convert)
sapply(DF, class)
#Sepal.Length  Sepal.Width Petal.Length  Petal.Width      Species 
#   "numeric"    "numeric"    "numeric"    "numeric"     "factor" 

这也会根据需要转换为逻辑,整数或复数值,但我想你不会介意的。基本上,这是read.table使用的。

但是,我想知道为什么你有一个以字符列开头的data.frame ...