【发布时间】:2018-05-06 08:59:12
【问题描述】:
假设我想创建 n 个随机变量,然后创建 n-1 个模型,对响应中的每个变量进行回归。我可以这样做:
x1 <- rnorm(1000, 0, 1)
x2 <- rnorm(1000, 0, 1)
x3 <- rnorm(1000, 0, 1)
x4 <- rnorm(1000, 0, 1)
x5 <- rnorm(1000, 0, 1)
x6 <- rnorm(1000, 0, 1)
x7 <- rnorm(1000, 0, 1)
x8 <- rnorm(1000, 0, 1)
y <- rnorm(1000, 0, 1)
model1 <- lm(y ~ x1)
model2 <- lm(y ~ x2)
model3 <- lm(y ~ x3)
model4 <- lm(y ~ x4)
model5 <- lm(y ~ x5)
model6 <- lm(y ~ x6)
model7 <- lm(y ~ x7)
model8 <- lm(y ~ x8)
summary model1
等等。显然,这很笨重,需要大量记账,并且为拼写错误打开了大门。
我认为有一种更直接的方法可以做到这一点,而且不会有太多出错的余地?
编辑:解决 cmets 我对缺乏明确性表示歉意。这里的细节和数据生成过程对我来说并不是特别重要。我只包含了玩具数据,因为我注意到人们通常会在有问题时包含玩具数据,我认为这是惯例。
我真正在寻找的是解决这个排序问题的过程。在我的工作中,拥有大型数据集并希望生成大量模型来比较不同的变量对是很常见的。我一直在使用上面描述的过程,我手工写出每个模型,或者在 excel 中执行某种命令连接,然后剪切粘贴。它只会产生非常低效的代码,我认为在 R 中必须有一种更简洁的方法来处理这个问题,因为这似乎是人们经常要做的事情。
【问题讨论】:
-
您的预期输出是什么?你想要模型摘要吗?你想要模型吗?你想要随机数据吗?生成“随机变量”需要多大的灵活性?在这一点上,你的问题还很不清楚
-
取决于你想创建多少数据并使用回归运行,如果比较小,你可以使用for循环。例如,要创建变量:
for (i in 1:8){ assign(paste0("X", i, sep=""), rnorm(1000, 0, 1)) }
标签: r loops variables iteration