r语言 - 重命名数据框架而不将其写入全局环境



我编写了一个循环,将数据帧存储在列表中,并希望使用存储在vector中的字符串作为其名称。这样,我就可以按名称引用存储在列表中的数据框,而不必使用索引。我已经在网上广泛搜索了这个问题,但到目前为止还没有找到任何解决方案。

到目前为止,我使用了一种解决方法:使用read.csv()遍历数据帧名称列表。在每次迭代中,我使用assign()将导入的数据帧写入全局环境,这允许我设置变量名称。使用get()和模式匹配方法,然后我从全局环境中获取数据帧并将它们存储在列表中。

这种方法非常麻烦,只有当数据帧名称遵循共享模式时才有效。

最好,我想重命名数据帧而不必使用assign():

导入的数据帧1的名称<-包含数据帧名称的向量的第一个元素

我怎样才能做到这一点?

我非常感谢每一个帮助!

我解决这类问题的方法是使用lapply创建循环,然后为结果列表的元素提供names。一旦"创建数据框架",这就提供了一个简单的两行解决方案。函数已写好

例如,生成一个随机的data.frame,而不是读取一个csv文件,以便于复制:

createDataFrame <- function(x) {
data.frame(X=x, Y=rnorm(5))
}
beatles <- lapply(1:4, createDataFrame)
names(beatles) <- c("John", "Paul", "George", "Ringo")
beatles
$John
X          Y
1 1 -1.1590175
2 1  0.6872888
3 1 -0.8868616
4 1 -0.3458603
5 1  1.1136297
$Paul
X          Y
1 2 -0.3761409
2 2 -0.9059801
3 2 -0.7039736
4 2 -0.4490143
5 2  1.1337149
$George
X          Y
1 3 -0.4804286
2 3  1.0573272
3 3 -1.9000426
4 3  0.8887967
5 3  0.6550380
$Ringo
X          Y
1 4 -0.7539840
2 4 -0.3743590
3 4 -0.9748449
4 4 -1.1448570
5 4 -1.3277712
beatles$George
X          Y
1 3 -0.4804286
2 3  1.0573272
3 3 -1.9000426
4 3  0.8887967
5 3  0.6550380

根据您的实际用例对createDataFrame进行明显的更改。