2013-03-02 36 views
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]))) 

但是,輸出是「字符」而不是「數字」。

我做錯了什麼?

+1

加載你在這裏顯示的數據後,做'sapply(df,class)'給了我'open'類爲'numeric'。你的測試數據似乎沒有問題 – Arun 2013-03-02 10:48:14

+2

歡迎來到SO :)關於@ Arun的評論,請仔細閱讀[請閱讀此文檔](http://stackoverflow.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

回答

3

apply強制數據幀爲矩陣或數組。見?apply

如果X不是一個數組但具有非空調光值(如數據幀)的類的對象,應用嘗試經由as.matrix將其強制到一個數組,如果它是二維的(例如數據幀)或通過as.array。

數組和矩陣只能容納一種類型的數據,而且由於第一列包含字符,因此所有內容都被強制轉換爲字符。

正如@Arun在他的評論中說的,你可以使用sapply(myData, class)或者簡單地使用str(myData)來檢查每一列的類別。

+0

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