这可能是一个非常简单的问题,但我确实需要R的帮助。
我有一个表达式数据,为此我运行了线性回归来校正协变量,我想在文件中提取残差。
以下是我的循环
for (i in 1:n) {
geneProbe <- z.na[,i]
lm1 <- lm(geneProbe ~ phenotype + covariate1 + covariate2 + covariate3)
write.table(lm1$residuals, file="residuals.txt", sep="\t")
}
当我做以下事情时
write.table(lm1$residuals, file="residuals.txt", sep="\t")
我只能为一个循环检索残差,如下所示(residuals.txt
):
Res1
-0.00224226
0.005144119
0.011142788
1.90E-05
-0.003698019
我希望将所有i
s或循环中的所有内容放入单个文件中,如下所示(residuals.txt
)。换句话说,每个循环都应该添加一列:
Res1 Res2 Res3 Res4
-0.00224226 0.009583449 0.000538104 0.012497267
0.005144119 0.015632242 -0.000104554 -0.009199898
0.011142788 -0.012912383 -0.004363051 -0.010270967
1.90E-05 -0.038716093 0.004149837 0.011071139
-0.003698019 0.015219847 -0.002486236 -0.009230721
答案 0 :(得分:3)
将残差保存在循环中的矩阵或数据框中,然后在完成后保存表格。 E.g:
resdat = matrix(NA, 5,n)
for (i in 1:n) {
geneProbe <- z.na[,i]
lm1 <- lm(geneProbe ~ phenotype + covariate1 + covariate2 + covariate3)
resdat[,i] = lm1$residuals
}
write.table(resdat, file="residuals.txt", sep="\t")