在 For 循环中动态命名 R 数据框

Dynamically Name R Data Frame in a For Loop

我正在使用 For 循环根据某些规范创建 100 个数据集。我的最终目标是让 1 个数据集包含每个迭代数据集(即数据集 1 到 100)。

我目前的解决方案不够优雅。我将每个单独的数据框(称为数据集)导出到 csv,然后将它们合并到 R 之外。对于 For 循环的每次迭代 i,我的数据框都会被覆盖。

Trackfile=1:100
for (i in Trackfile){
  d.cor <- .10 # Desired correlation
  Dataset <- as.data.frame(mvrnorm(20, mu = c(0,0), 
                                   Sigma = matrix(c(1,d.cor,d.cor,1), ncol = 2), 
                                   empirical = TRUE))
  write.csv(Dataset, paste0("C:/",d.cor," ",i,".csv"))
}

我认为解决方案是根据迭代 (i) 动态命名数据框,这样数据框被命名为 dataset1、dataset2...dataset100,然后合并它们。但是我一直在努力寻找一种动态命名嵌入在 For 循环中的数据帧的解决方案。我是R的新手,请帮忙!

R 可以轻松处理这个问题。这是一种方法,但它可能需要根据您要对所有这些随机数据集执行的操作进行修改。这将构建一个列表,其中包含 100 个标记为 "data001" 到 "data100":

的矩阵
library(MASS)
d.cor <- .10
DATA <- replicate(100,  mvrnorm(n=20, mu=c(0, 0), Sigma=matrix(c(1,
     d.cor, d.cor, 1), ncol=2), empirical=TRUE), simplify=FALSE)
names <- paste0("data", sprintf("%0003d", 1:100))
names(DATA) <- names
head(DATA[["data099"]])
#              [,1]         [,2]
#  [1,]  1.94086111  1.570299681
#  [2,] -0.74071651 -0.664948968
#  [3,] -1.02952487 -0.704650191
#  [4,]  0.85203916  0.698703243
#  [5,] -0.08673212  1.668412324
#  [6,]  0.88828524  0.001039757
save(DATA, file="AllData.RData")

此代码创建一个包含 100 个矩阵的列表,并为每个矩阵命名。您可以使用名称或编号 DATA[["data099")]]DATA[[99]] 访问特定矩阵。它被保存为 "AllData.RData",以便您可以使用 load("AllData.RData") 检索它。根据您打算如何处理这些数据,一个列表可能比 100 个单独的文件更灵活。

感谢 rnso 为我指出替代解决方案:

trial=NULL
Trackfile=1:10
for (i in Trackfile){
  d.cor <- .10 # Desired correlation
  Dataset <- as.data.frame(mvrnorm(20, mu = c(0,0), 
                                   Sigma = matrix(c(1,d.cor,d.cor,1), ncol = 2), 
                                   empirical = TRUE))
  trial = rbind(trial, data.frame(Dataset$V1, Dataset$V2))
}
print(trial)
print(Dataset)

感谢 Whosebug 社区。非常感谢。