[英]How to rbind multiple matrices into one big matrix
我定義了一個處理每個csv文件的函數,它返回一個矩陣。 我想在for循環中使用此函數來處理所有文件並將所有數據組合成一個大矩陣。 但似乎這段代碼不起作用。
filenames=dir()
bigMatrix = processEachCSV(filenames[1])
for (i in 2:length(filenames1)) {
x = processEachCSV(filenames[i])
bigMatrix=rbind[bigMatrix,x]
}
我想是因為我不能對x和bigMatrix進行調整並將其分配給bigMatrix本身?
我該怎么做?
processEachCSV函數是這樣的:
processEachCSV <- function (filename){
x = read.table(filename, header=F, sep=',', fileEncoding='UTF-8')
x$V4=as.numeric(gsub("[^0-9.]",'', as.character(x$V4)))
x$V5=as.numeric(gsub("[^0-9.]",'', as.character(x$V5)))
x$V6=substr(filename, 1, nchar(filename)-4)
colnames(x)=c('DateTime','Site','AQI','PM25','PM10','City')
x=as.matrix(x)
return (x)
}
基本方法是這樣的:
do.call(rbind, lapply(filenames, read.csv))
使用processEachCSV
函數實際執行的任何操作(如果確實是函數)自定義read.csv
部分。
或者,您可以查看“dplyr”中的某些rbind_list
函數或“data.table”中的rbindlist
函數,這兩個函數都比do.call(rbind, ...)
更有效。 在這些情況下,結果不是matrix
,但您可以很容易地將其轉換為矩陣。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.