2016-01-13 22 views
1

我想讀取csv文件作爲矩陣,矩陣是數字。 的followwing是我的代碼如何將數據框讀取爲矩陣?

1,讀出的數據

mydata<-read.csv("mydata.csv", header = TRUE, sep=',', check.names = FALSE) 
str(mydata) 

2,變換爲數字數據

mydata_1<-data.matrix(mydata) 
str(mydata_1) 

對於第一個步驟中,輸出是細see pic1

但對於第二步,當我想將數據幀轉換爲數字矩陣時,輸出將更改爲如下所示。看到rownames和列名已被更改,並且單元格值也不是真的,這是不需要的。 see pic2

我也試過下面的語法,但是它產生了與上面相同的結果。

mydata_1<-sapply(mydata, as.numeric) 

,這裏是任何建議表示讚賞我的數據文件link of mydata

的鏈接。

+5

我的猜測(我不會下載自己的數據你應該讓你的問題[重複性(http://stackoverflow.com。/questions/5963269/how-to-make-a-great-r-reproducible-example)是指你的數據是開始的因素。 – Heroka

+2

你有沒有試過'read.csv(...,na.strings =「 - 」)'? –

+2

您也可以在'read.csv()'調用中嘗試'row.names = 1',將第一列寫入行名稱中。注意:'header = TRUE'和'sep =「,''是'read.csv()'中的默認值。你不需要寫它們。 –

回答

3

這是因爲您有幾種數據類型(factor,num),而矩陣只能存儲一種數據類型。我建議你刪除第一列只有數學運算:

mydata_1<-data.matrix(mydata[,-1]) 
+1

謝謝@HubertL,但我需要國名作爲行名,所以我不能刪除它。這是第一個問題,第二個問題是'data.matrix()'函數會改變數據值的大小,這是不需要的。 –

+0

你爲什麼要使用矩陣? – HubertL

+1

謝謝@HubertL。你是對的。問題真的存在於rownames中,所以通過添加'rowname = 1',問題就解決了。 –