1

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

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])))

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

我做错了什么?

4

1 回答 1

3

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

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

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

正如@Arun 在他的评论中所说,您可以使用sapply(myData, class)或非常简单地使用str(myData).

于 2013-03-02T10:55:22.147 回答