根据 R 中循环中的循环数为数据帧生成变量名称

0 loops r dataframe

我正在使用 lm() 函数开发和优化线性模型,随后使用 step() 函数进行优化。我通过使用 0 和 1 的随机生成器(每个都有 50% 的机会)向我的数据帧添加了一个变量。我使用此变量将数据帧子集划分为训练集和验证集如果记录未分配给训练集,则将其分配给验证集。通过使用这些子集,我能够估计模型的拟合程度(通过对验证集中的记录使用预测函数并将它们与原始值进行比较)。我对优化模型的系数以及预测和实际结果分布之间的 KS 检验结果感兴趣。

我的所有代码都运行良好,但是当我想测试我的模型是否对我选择的子集敏感时,我遇到了一些问题。为此,我想创建一个 for (i in 1:10) 循环,每次使用不同的随机子集。结果证明这对我来说是一个很大的挑战(我以前从未在 R 中使用过 for 循环)。

这是问题所在(实际上有很多问题,但这是其中之一):

我想为循环中的每次运行使用唯一的名称(例如:Run1、Run2、Run3)使用单独的数据帧。我已经能够使用 paste(("Run",1:10,sep="") 创建一个具有不同字符串的变量,但这只是给你一个字符串列表。我如何使用这些字符串作为我的 (子集)数据帧?

我希望遇到的另一个问题:随后我想为每次运行使用拟合系数并将它们导出到 Excel。通过使用 coef(function) 我已经能够检索系数,但是由于优化算法,模型中包含的系数数量可能会在每次模拟运行时发生变化。这几乎肯定会给我带来一些麻烦,将它们粘贴到同一个数据框中,对此有何想法?

谢谢你的协助。

Edw*_*ard 5

对于你的第一个问题:

您可以像以前一样创建字符串,使用

df.names <- paste(("Run",1:10,sep="")
Run Code Online (Sandbox Code Playgroud)

然后,创建您的 for 循环并执行以下操作,为数据框指定您想要的名称:

for (i in 1:10){
   d.frame <- # create your data frame here
   assign(df.name[i], d.frame)
}
Run Code Online (Sandbox Code Playgroud)

现在您将得到十个具有十个不同名称的数据框。

关于系数的第二个问题:

据我所知,这些并不自然适合您的数据框结构。您应该考虑使用列表,因为它们允许不同的类 - 换句话说,对于每次运行,创建一个包含数据框和带有系数的数字向量的列表。