为什么在指定时不会将其读作数字?

时间:2012-10-29 22:52:57

标签: r csv

我把它缩小到一个非常小的例子,所以我确定这是非常愚蠢的。

我的文件test.delete包含以下内容:

Rock,bird
1350909372121900000,55.20000
1350909372318100000,55.30000
1350909382020900000,55.20000
1350909382029600000,55.20000
1350909384311100000,55.20000

然后我做:

test = read.csv('test.delete', colClasses=c('character','numeric'))

但所有列似乎都以字符形式读入:

> apply(test, 2, class)
       Rock        bird
"character" "character"

为什么会这样?

1 个答案:

答案 0 :(得分:4)

read.csv正在按您的意愿工作。你在这里误用了apply

如果对导入的数据运行str,您应该看到另一个变量是数字。但是当你调用apply时,数据框被强制转换为矩阵,该矩阵只处理一种数据类型,并且所有内容都被强制转换为字符。

检查列类的更安全的方法是使用lapply,因为data.frame实际上是一个列表。