Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/74.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/2/joomla/2.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在单个新数据帧中输出多个模型的残差?_R_Dataframe_Lme4_Genetics - Fatal编程技术网

如何使用R在单个新数据帧中输出多个模型的残差?

如何使用R在单个新数据帧中输出多个模型的残差?,r,dataframe,lme4,genetics,R,Dataframe,Lme4,Genetics,我想针对多个不同的因变量运行一组静态自变量的多元回归模型,并将残差输出到一个新文件中,看起来像 SampleID site_residual1 site_residual2 site_residual3 F001 0.003 0.988 0.776 F001 0.002 0.876 0.665 F002 0.134

我想针对多个不同的因变量运行一组静态自变量的多元回归模型,并将残差输出到一个新文件中,看起来像

SampleID     site_residual1    site_residual2    site_residual3
F001         0.003             0.988             0.776
F001         0.002             0.876             0.665
F002         0.134             0.234             0.786
...
SampleID     site1  site2   site3   etc...
F001         0.003  0.988   0.776   etc...
F001         0.002  0.876   0.665   etc...
F002         0.134  0.234   0.786   etc...
...
SampleID     indep1 indep2  indep3  chip1   etc...
F001         0.003  0.988   0.776   2       etc...
F001         0.002  0.876   0.665   2       etc...
F002         0.134  0.234   0.786   1       etc...
...
SampleID    site1_resid
F001        0.0110177454696274
F002        0.0923483180517723
F003        0.103686493563883
F004        -0.106193404096636
F005        -0.124621172636435
....
我一直在使用下面的代码来获得单个剩余输出,但是在实现一个将在我的所有站点上运行的循环时失败了

infile = sprintf("/path/siteinput.txt.gz")
因菲看起来像

SampleID     site_residual1    site_residual2    site_residual3
F001         0.003             0.988             0.776
F001         0.002             0.876             0.665
F002         0.134             0.234             0.786
...
SampleID     site1  site2   site3   etc...
F001         0.003  0.988   0.776   etc...
F001         0.002  0.876   0.665   etc...
F002         0.134  0.234   0.786   etc...
...
SampleID     indep1 indep2  indep3  chip1   etc...
F001         0.003  0.988   0.776   2       etc...
F001         0.002  0.876   0.665   2       etc...
F002         0.134  0.234   0.786   1       etc...
...
SampleID    site1_resid
F001        0.0110177454696274
F002        0.0923483180517723
F003        0.103686493563883
F004        -0.106193404096636
F005        -0.124621172636435
....

菲诺看起来像

SampleID     site_residual1    site_residual2    site_residual3
F001         0.003             0.988             0.776
F001         0.002             0.876             0.665
F002         0.134             0.234             0.786
...
SampleID     site1  site2   site3   etc...
F001         0.003  0.988   0.776   etc...
F001         0.002  0.876   0.665   etc...
F002         0.134  0.234   0.786   etc...
...
SampleID     indep1 indep2  indep3  chip1   etc...
F001         0.003  0.988   0.776   2       etc...
F001         0.002  0.876   0.665   2       etc...
F002         0.134  0.234   0.786   1       etc...
...
SampleID    site1_resid
F001        0.0110177454696274
F002        0.0923483180517723
F003        0.103686493563883
F004        -0.106193404096636
F005        -0.124621172636435
....

所以,我真的在寻找一种方法,为我的“infle”中的每个站点运行model1,并将所有剩余内容输出到一个新文件中。另外,我希望列标题包含“站点”的原始名称。我在中确实缺少一些信息(所有协变量都是完整的,但某些ID缺少一些站点)


如果您有任何建议,我们将不胜感激。

请借助
magrittr
管道(
%%>%%
),以使其更易于阅读(但无需):

库(magrittr)
名称(测试版)%>%
setdiff(“样本ID”)%%>%
集合名(,)%>%
lappy(函数(x){
型号%
c(列表(SampleID=merged$SampleID),)%>%
do.call(what=“data.frame”)

(另一方面,我担心您有重复的
SampleID
s。这是有意的吗?如果是,您确定要通过
SampleID
合并()?您不想做
cbind(beta,pheno[,-1,drop=FALSE])

也许可以看看专为这种情况设计的
扫帚
包:谢谢你的建议。扫帚在将残差添加到原始数据框时看起来确实很有用,但我真的很有兴趣为每个结果变量创建一个带有残差列的新数据框。我在扫帚包中没有看到这个功能,但也许我在某个地方遗漏了这一点?SampleID不应该包含重复项,但会产生1:1的合并。但是,它们在两个文件中的排序不同。谢谢,@a-p-o-m。当我应用您的建议时,我在data.frame(SampleID=c)中得到以下错误…
error(1L,2L,3L,4L,5L,6L,7L,8L,9L,10L,:参数表示不同的行数:26842676调用:%%>%…withVisible->->->->do.call->data.frame执行已停止
。我假设这是由于某些站点缺少值,但我不清楚为什么
na.action=na.exclude
无法解决此问题。任何添加欢迎并感谢所有建议。谢谢,@Apom。在将
na.action=na.exclude
而不是
resid
放入模型语句后,我能够使其正常工作。