我有个简单的问题。我有一个有121列的数据框架。列9:121需要是数字,但是当导入到R中时,它们是数字、整数和因子的混合物。列1:8需要保留字符。
我见过一些人使用循环,而另一些人使用()。你认为最优雅的方法是什么?
非常感谢,
保罗·M
发布于 2014-02-05 23:55:25
试试下面的..。apply函数允许循环遍历dataframe的任意行、cols或两者,并应用任何函数,因此,为了确保9:121中的所有列都是数字的,您可以执行以下操作:
table[,9:121] <- apply(table[,9:121],2, function(x) as.numeric(as.character(x)))
table[,1:8] <- apply(table[,1:8], 2, as.character)其中的表是你读到R的数据。
简单地说,我在apply函数中指定了要循环遍历的表--在本例中,我们要对表的子集进行更改,然后指定数字2来指示列,最后给出as.numeric或as.character函数的名称。然后,赋值运算符将表中的旧值替换为格式正确的新值。
-EDIT:就像我记得的那样,更改了第一行,如果您从一个因子转换为一个数字,那么您得到的是因子级别的整数,而不是您认为首先需要转换到因子的数字,然后是数字,这可以通过在as.numeric中包装as.character来完成。
发布于 2014-02-06 00:57:31
当您在表中阅读时,使用strinsAsFactors=FALSE,那么就不会有任何因素了。
https://stackoverflow.com/questions/21591090
复制相似问题