我有一个简单的问题。我有一个121列的数据框。第9:121列需要是数字,但是当导入R时,它们是数字和整数以及因子的混合。第1:8列需要保留字符。
我看到有些人使用循环,其他人使用apply()。您认为最优雅的做法是什么?
非常感谢,
保罗M答案 0 :(得分:0)
尝试以下操作... apply函数允许您循环数据框的行,列或两者,并应用任何函数,因此为了确保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.character包装在.numeric中来实现。
答案 1 :(得分:0)
当您在表格中阅读使用strinsAsFactors=FALSE
时,将不会有任何因素。