转换/更改特定列类而不进行子集化

时间:2014-05-29 06:01:05

标签: r class

windows 7,R 3.1.0 64bit

我有一个带有45个obs的data.frame。和46个变量以及所有列类作为字符。如何只将一个或两个列类更改为数字,例如,不对该列进行子集化。基本上,我想用新类维护data.frame。是否有一行代码可以做到这一点?

lapply给了我一些数据的子集,我不想要,或者我错过了这个功能。您可以演示使用mtcars数据集,例如

我在网上搜了几个小时。

感谢您抽出宝贵时间。

2 个答案:

答案 0 :(得分:0)

如果您认为列应该是数字,请确保您知道为什么R将它们转换为字符。最好让数据导入尽可能干净,而不是在事后纠正错误。不过,您可以使用简单的循环

转换列
dd <- mtcars
for(col in c("disp","hp")) {
    dd[[col]] <- as.character(dd[[col]])
}
str(dd)

由于mtcars中的所有内容都是数字,我将两个字段转换为字符。您也可以在这里使用lapply,但这是少数的情况之一,我认为for循环在我看来更为直接。

答案 1 :(得分:0)

要转换列&#34; col1&#34;您的data.frame df到numeric:

class(df[["col1"]]) <- "numeric"