数字列显示字符
问题描述:
我有一个文件,它看起来像这样:数字列显示字符
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])))
但是,输出是“字符”而不是“数字”。
我做错了什么?
答
apply
强制数据帧为矩阵或数组。见?apply
:
如果X不是一个数组但具有非空调光值(如数据帧)的类的对象,应用尝试经由as.matrix将其强制到一个数组,如果它是二维的(例如数据帧)或通过as.array。
数组和矩阵只能容纳一种类型的数据,而且由于第一列包含字符,因此所有内容都被强制转换为字符。
正如@Arun在他的评论中说的,你可以使用sapply(myData, class)
或者简单地使用str(myData)
来检查每一列的类别。
+0
(+1)dint想一下'apply'的效果。很好的调试! – Arun 2013-03-02 11:02:31
加载你在这里显示的数据后,做'sapply(df,class)'给了我'open'类为'numeric'。你的测试数据似乎没有问题 – Arun 2013-03-02 10:48:14
欢迎来到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