数字列显示字符

问题描述:

我有一个文件,它看起来像这样:数字列显示字符

Time,Open,High,Low,Close,Volume 
01.02.1995 00:00:00.000,1.57920,1.58400,1.57700,1.58240,0.00 
02.02.1995 00:00:00.000,1.58200,1.58620,1.57820,1.58130,0.00 
03.02.1995 00:00:00.000,1.58150,1.58280,1.56050,1.56180,0.00 
04.02.1995 00:00:00.000,1.56180,1.56180,1.56180,1.56180,0.00 

我想dataframe其中第一列是字符(将其更改为一个日期是下一个步骤),其余的数字,所以我这样做:

myData <- read.table("C:\\Users\\Adam\\Desktop\\GU95.csv", colClasses=c("character",rep("numeric",5)), header=TRUE, sep = ',')) 

要检查类第二列(开放)的,我这样做:

myData$Open <- apply(myData, 1, function(row) print(class(row[2]))) 

但是,输出是“字符”而不是“数字”。

我做错了什么?

+1

加载你在这里显示的数据后,做'sapply(df,class)'给了我'open'类为'numeric'。你的测试数据似乎没有问题 – Arun 2013-03-02 10:48:14

+2

欢迎来到SO :)关于@ Arun的评论,请仔细阅读[请阅读此文档](http://*.com/questions/5963269/how-to-make-a -great-r-reproducible-example) - 提供'C:\\ Users \\ Adam \\ Desktop \\ GU95.csv'作为您的示例数据不是特别有用。注意'dput(yourdata)'部分 – 2013-03-02 11:07:32

apply强制数据帧为矩阵或数组。见?apply

如果X不是一个数组但具有非空调光值(如数据帧)的类的对象,应用尝试经由as.matrix将其强制到一个数组,如果它是二维的(例如数据帧)或通过as.array。

数组和矩阵只能容纳一种类型的数据,而且由于第一列包含字符,因此所有内容都被强制转换为字符。

正如@Arun在他的评论中说的,你可以使用sapply(myData, class)或者简单地使用str(myData)来检查每一列的类别。

+0

(+1)dint想一下'apply'的效果。很好的调试! – Arun 2013-03-02 11:02:31