繁体   English   中英

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

[英]Generating variable names for dataframes based on the loop number in a loop in R

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

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

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

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

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

谢谢你的协助。

不要创建名称中带有数字的对象,然后尝试使用get,paste和assign循环访问它们。 正确的方法是将元素存储在R列表对象中。

对于第一个问题:

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

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

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

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

现在,您将获得带有十个不同名称的十个数据帧。

关于系数的第二个问题:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM