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

将整个数据帧中的向量强制转换为R中的适当类,r,R,我有一个大约3000列的大数据框。每列都是一个因子,但有些是概念上的数字 我编写了这个quick for循环来转换适当的列,但它似乎没有按照我预期的方式工作。本质上,我检查并查看将向量强制转换为数字是否会导致该向量的平均值为NaN,如果不是,则继续将向量强制转换为数字,否则,将其强制转换为字符 代码如下: for (i in 1:length(data)) { ifelse(!is.nan(mean(as.numeric(as.character(data[,i])), na.rm=

我有一个大约3000列的大数据框。每列都是一个因子,但有些是概念上的数字

我编写了这个quick 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])
      )  
 }

问题是它不会更改我的数据。

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

DF <- lapply(iris, as.character)
sapply(DF, class)
#Sepal.Length  Sepal.Width Petal.Length  Petal.Width      Species 
# "character"  "character"  "character"  "character"  "character"
这也会适当地转换为逻辑值、整数值或复数值,但我想您不会介意的。基本上,这就是
read.table
使用的内容


但是,我想知道为什么您要以字符列的data.frame开始…

我假设您有字符列的data.frame:

DF <- lapply(iris, as.character)
sapply(DF, class)
#Sepal.Length  Sepal.Width Petal.Length  Petal.Width      Species 
# "character"  "character"  "character"  "character"  "character"
这也会适当地转换为逻辑值、整数值或复数值,但我想您不会介意的。基本上,这就是
read.table
使用的内容


但是,我想知道为什么您要以字符列的data.frame开始…

我假设您有字符列的data.frame:

DF <- lapply(iris, as.character)
sapply(DF, class)
#Sepal.Length  Sepal.Width Petal.Length  Petal.Width      Species 
# "character"  "character"  "character"  "character"  "character"
这也会适当地转换为逻辑值、整数值或复数值,但我想您不会介意的。基本上,这就是
read.table
使用的内容


但是,我想知道为什么您要以字符列的data.frame开始…

我假设您有字符列的data.frame:

DF <- lapply(iris, as.character)
sapply(DF, class)
#Sepal.Length  Sepal.Width Petal.Length  Petal.Width      Species 
# "character"  "character"  "character"  "character"  "character"
这也会适当地转换为逻辑值、整数值或复数值,但我想您不会介意的。基本上,这就是
read.table
使用的内容


但是,我想知道为什么要以字符列的data.frame开始…

您必须将其重新分配给变量。。。应该考虑罗兰的问题。通过在任何
read.*
函数中使用colClasses,您可以强制数据成为特定的类,从而在交易中获得更好的性能。您必须将其分配回变量。。。应该考虑罗兰的问题。通过在任何
read.*
函数中使用colClasses,您可以强制数据成为特定的类,从而在交易中获得更好的性能。您必须将其分配回变量。。。应该考虑罗兰的问题。通过在任何
read.*
函数中使用colClasses,您可以强制数据成为特定的类,从而在交易中获得更好的性能。您必须将其分配回变量。。。应该考虑罗兰的问题。通过在任何
read.*
函数中使用colClasses,您可以强制数据成为特定的类,从而在讨价还价中获得更好的性能。这非常有效-感谢您的提示。您的问题的答案是,数据以全字符类型存储在Mongo中。因此,我认为当我通过
RMongoDB
将其读入R时,数据是这样存储的。。。不管怎么说,这个效果很好。这个效果很好-谢谢你的提示。您的问题的答案是,数据以全字符类型存储在Mongo中。因此,我认为当我通过
RMongoDB
将其读入R时,数据是这样存储的。。。不管怎么说,这个效果很好。这个效果很好-谢谢你的提示。您的问题的答案是,数据以全字符类型存储在Mongo中。因此,我认为当我通过
RMongoDB
将其读入R时,数据是这样存储的。。。不管怎么说,这个效果很好。这个效果很好-谢谢你的提示。您的问题的答案是,数据以全字符类型存储在Mongo中。因此,我认为当我通过
RMongoDB
将其读入R时,数据是这样存储的。。。不管怎样,这个效果很好。