数字列显示为字符

时间:2013-03-02 10:43:59

标签: r

我有一个看起来像这样的文件:

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 个答案:

答案 0 :(得分:3)

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

  

如果X不是数组而是具有非空昏暗值的类的对象(例如数据框),则应用尝试通过as.matrix将其强制转换为数组(如果它是二维的)(例如,数据框)或通过as.array。

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

正如@Arun在评论中所说,您可以使用sapply(myData, class)或仅使用str(myData)检查每列的课程。