如何将多个矩阵合并为一个大矩阵
How to rbind multiple matrices into one big matrix
我定义了一个函数来处理每个 csv 文件,它 returns 是一个矩阵。我想在 for 循环中使用这个函数来处理所有文件并将所有数据组合成一个大矩阵。但是这段代码似乎不起作用。
filenames=dir()
bigMatrix = processEachCSV(filenames[1])
for (i in 2:length(filenames1)) {
x = processEachCSV(filenames[i])
bigMatrix=rbind[bigMatrix,x]
}
我猜是因为我不能rbind 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
,但您可以很容易地将其转换为矩阵。
我定义了一个函数来处理每个 csv 文件,它 returns 是一个矩阵。我想在 for 循环中使用这个函数来处理所有文件并将所有数据组合成一个大矩阵。但是这段代码似乎不起作用。
filenames=dir()
bigMatrix = processEachCSV(filenames[1])
for (i in 2:length(filenames1)) {
x = processEachCSV(filenames[i])
bigMatrix=rbind[bigMatrix,x]
}
我猜是因为我不能rbind 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
,但您可以很容易地将其转换为矩阵。