Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如果满足条件,如何更新循环中-lm-的因变量_R_For Loop_Regression - Fatal编程技术网

R 如果满足条件,如何更新循环中-lm-的因变量

R 如果满足条件,如何更新循环中-lm-的因变量,r,for-loop,regression,R,For Loop,Regression,我正在尝试运行一个回归,如果伪/二进制变量的值为1,则让它运行。我有一组5个虚拟变量,需要5个回归,所有回归都有相同的因变量:Y | d1==1~x1+x2,Y | d2==1~x1+x2。我有以下最简单的工作示例: set.seed(123) df在这种情况下,您实际上不需要更改公式,您需要过滤传递到回归中的数据。你可以这样做 n <- 2 regList <- vector(mode = "list", length = n) for(i in seq_along(reg

我正在尝试运行一个回归,如果伪/二进制变量的值为1,则让它运行。我有一组5个虚拟变量,需要5个回归,所有回归都有相同的因变量:Y | d1==1~x1+x2,Y | d2==1~x1+x2。我有以下最简单的工作示例:

set.seed(123)

df在这种情况下,您实际上不需要更改公式,您需要过滤传递到回归中的数据。你可以这样做

n <- 2
regList <- vector(mode = "list", length = n)    
for(i in seq_along(regList)){
  regList[[i]] <- lm(Y ~ x1 + x2, df[df[[paste0("d", i)]]==1, ])
}

n我已经相应地更新了它,感谢您指出这一点。需要指出的是,在我的真实数据集中,d1和d2是互斥的——我不知道如何在我的工作示例中包含这一点,因为我生成了随机伪变量。我得到一个错误:“lm.fit中的错误(x,y,offset=offset,singular.ok=singular.ok…):0(非NA)情况”。我将更新我的代码,使其更能反映我的实际场景,因为我认为它可能略有不同。现在我明白了为什么,我上面示例中的虚拟变量是d1和d2。在我的实际工作中,他们的名字与数字无关(他们的名字有小麦、玉米、水稻、大豆、油菜籽),有没有一个解决办法,我可以创建一个列表,然后运行它?但是,是的,上述方法确实有效,我只是忘记清理我的环境。我会更新代码@Brennan不使用seq_,只使用列名向量。使用lappy而不是循环,这样你就不必为结果列表编制索引了。我会研究它,我对这个很陌生,所以我甚至不知道lappy是什么。我将接受答案,因为它适用于我给出的示例,非常感谢!