簡體   English   中英

如何將多個矩陣轉換成一個大矩陣

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM