我最近遇到了一個問題,每次我讀取一個包含帶有值的表的csv文件時,R都會以列表格式而不是數字讀取它。由於沒有任何線索爲我提供了完整的答案,所以一旦我能夠讓它運行,我決定在這裏包含對我有用的腳本,希望對某人有用。在這裏,有一些描述和一些選項以備需要時使用:從R列表轉換爲數字
(1)從csv文件中讀取數據。這裏,文件沒有頭,所以我把女,如果你有一個頭,然後將其更改爲T.
data <- read.csv("folder_path/data_file.csv", header=F)
(1.A)注意:如果你是說一個警告「不完整的最後一行找到通過readTableHeader「,這意味着R沒有找到文件結束符號。只需在csv文件末尾添加一個額外的空行,該消息就不會再顯示出來。 (2)您可以使用mode命令檢查數據是否爲列表格式(如果它是數字,那麼您已經設置完畢,根本不需要此過程!)。
mode(data)
(3)使用數據的維度初始化一個矩陣(如NA),數據格式爲數據格式。
dataNum <- matrix(data = NA, nrow = dim(data)[1], ncol = dim(data)[2])
(4)可選:如果您想要的名字添加到您的列和/或行,你可以使用一個,如果這些選項。
(4A)名稱添加到行和列,假設每個有類似的信息,換句話說,你希望被COL_1的名字,COL_2,......和row_1,row_2,...
colnames(dataNum) <- colnames(dataNum, do.NULL = F, prefix = "col_")
rownames(dataNum) <- rownames(dataNum, do.NULL = F, prefix = "row_")
(4b)如果你想爲每一列和每一行使用不同的名字,那麼改用這個選項並手動添加所有名字。
colnames(dataNum) <- c("col_name_1", "col_name_2")
rownames(dataNum) <- c("row_name_1", "row_name_2")
(5)從列表中變換數據,以數字形式,並把它在基質中dataNum。
for (i in 1:dim(data)[2]) {
dataNum[,i] <- c(as.numeric(data[[i]]))
}
(6)您可以使用mode命令檢查矩陣是否爲數字格式。
mode(dataNum)
(7)可選:如果您想轉置矩陣,可以使用以下說明。
dataNum <- t(dataNum)
不要在問題中包含答案。把我們想要解決的問題寫成問題並提交答案作爲實際答案...... – Dason
我認爲這可能更適合您的博客或類似內容。正如@Dason指出的那樣,這並不適合本網站的問答風格。如果您不確定如何在網站上發佈信息,請查看[** faq **](http://stackoverflow.com/faq)。儘管付出很大的努力,只需要一點點修改就可以將其重新調整爲問答。 –