如何使用 r 中的循环方法重命名不同矩阵中的列?

How can I rename a column in different matrices with a loop method in r?

我想用一个循环重命名很多矩阵中的列(矩阵的名称是 mydata1、mydata2、mydata3 等等),因为我有 500 多个矩阵。

每个矩阵都有两列:Date 和 Close,我想将 Close 列重命名为例如在 mydata1 中应为 Close1,在 mydata2 中应为 Close2 等。

我尝试了这个(为了简化问题我尝试只为前五种情况编写代码):

for( i in 1:5){

colnames(eval(as.symbol(paste("mydata",i,sep=""))))[2] = paste0("Close", i,sep="")

}

但是没有用。不幸的是,这次尝试

for( i in 1:5){

assign(paste("Close", i,sep=""), colnames(eval(as.symbol(paste("mydata",i,sep=""))))[2])

}

也没用。所以我的问题是:如何使用 r 中的循环方法重命名不同矩阵中的列?

您可以执行以下操作

首先创建数据

mat1           <- matrix(rnorm(12), ncol = 2)
colnames(mat1) <- c('Date', 'Close')
mat2           <- mat1 * 10
matlist        <- list(mat1, mat2)

matlist
#[[1]]
#            Date      Close
#[1,]  1.45771420  0.1559991
#[2,]  0.87375548  1.3003942
#[3,] -0.95295604 -1.1558864
#[4,] -0.03167548  0.2160419
#[5,]  0.11407587  0.8044782
#[6,] -1.05365988 -0.7321157
#
#[[2]]
#            Date      Close
#[1,]  14.5771420   1.559991
#[2,]   8.7375548  13.003942
#[3,]  -9.5295604 -11.558864
#[4,]  -0.3167548   2.160419
#[5,]   1.1407587   8.044782
#[6,] -10.5365988  -7.321157

使用lapply重命名第二列

new_matlist <- lapply(1:length(matlist), function(x) { colnames(matlist[[x]]) = c('Date',paste('Close', x, sep = '')); matlist[[x]]; } )
new_matlist
#[[1]]
#            Date     Close1
#[1,]  1.45771420  0.1559991
#[2,]  0.87375548  1.3003942
#[3,] -0.95295604 -1.1558864
#[4,] -0.03167548  0.2160419
#[5,]  0.11407587  0.8044782
#[6,] -1.05365988 -0.7321157
#
#[[2]]
#            Date     Close2
#[1,]  14.5771420   1.559991
#[2,]   8.7375548  13.003942
#[3,]  -9.5295604 -11.558864
#[4,]  -0.3167548   2.160419
#[5,]   1.1407587   8.044782
#[6,] -10.5365988  -7.321157