我把它缩小到一个非常小的例子,所以我确定这是非常愚蠢的。
我的文件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"
为什么会这样?
答案 0 :(得分:4)
read.csv
正在按您的意愿工作。你在这里误用了apply
。
如果对导入的数据运行str
,您应该看到另一个变量是数字。但是当你调用apply
时,数据框被强制转换为矩阵,该矩阵只处理一种数据类型,并且所有内容都被强制转换为字符。
检查列类的更安全的方法是使用lapply
,因为data.frame实际上是一个列表。