我有一个看起来像这样的文件:
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])))
但是,输出是“字符”而不是“数字”。
我做错了什么?
答案 0 :(得分:3)
apply
将数据帧强制转换为矩阵或数组。见?apply
:
如果X不是数组而是具有非空昏暗值的类的对象(例如数据框),则应用尝试通过as.matrix将其强制转换为数组(如果它是二维的)(例如,数据框)或通过as.array。
数组和矩阵只能包含一种类型的数据,并且由于第一列包含字符,因此所有内容都强制为字符。
正如@Arun在评论中所说,您可以使用sapply(myData, class)
或仅使用str(myData)
检查每列的课程。