R 如何循环回归并获得变量的原始名称?

R 如何循环回归并获得变量的原始名称?,r,dataframe,loops,for-loop,R,Dataframe,Loops,For Loop,假设我有以下数据帧: df = structure(list(X1 = c(-1.18944760538218, -1.29854014882472, 0.583311783714593, 0.650871260739756, -0.000391966126701203, 1.23053193924217, 1.70030189473426, -0.576054488536938, 0.0291802126175275, 1.43019460222912, -1.0301194391522,

假设我有以下数据帧:

df = structure(list(X1 = c(-1.18944760538218, -1.29854014882472, 0.583311783714593, 
0.650871260739756, -0.000391966126701203, 1.23053193924217, 1.70030189473426, 
-0.576054488536938, 0.0291802126175275, 1.43019460222912, -1.0301194391522, 
0.672348388347025, -0.173407147880241, -1.5368071194984, 0.676906374446062, 
0.245381059292165, 0.192944401742425, -1.22846757821128, 0.761438857461385, 
-1.49010138930763), X2 = c(-1.18944760538218, -1.29854014882472, 
0.583311783714593, 0.650871260739756, -0.000391966126701203, 
1.23053193924217, 1.70030189473426, -0.576054488536938, 0.0291802126175275, 
1.43019460222912, -1.0301194391522, 0.672348388347025, -0.173407147880241, 
-1.5368071194984, 0.676906374446062, 0.245381059292165, 0.192944401742425, 
-1.22846757821128, 0.761438857461385, -1.49010138930763), X3 = c(-1.18944760538218, 
-1.29854014882472, 0.583311783714593, 0.650871260739756, -0.000391966126701203, 
1.23053193924217, 1.70030189473426, -0.576054488536938, 0.0291802126175275, 
1.43019460222912, -1.0301194391522, 0.672348388347025, -0.173407147880241, 
-1.5368071194984, 0.676906374446062, 0.245381059292165, 0.192944401742425, 
-1.22846757821128, 0.761438857461385, -1.49010138930763), X4 = c(-1.18944760538218, 
-1.29854014882472, 0.583311783714593, 0.650871260739756, -0.000391966126701203, 
1.23053193924217, 1.70030189473426, -0.576054488536938, 0.0291802126175275, 
1.43019460222912, -1.0301194391522, 0.672348388347025, -0.173407147880241, 
-1.5368071194984, 0.676906374446062, 0.245381059292165, 0.192944401742425, 
-1.22846757821128, 0.761438857461385, -1.49010138930763), X5 = c(-1.18944760538218, 
-1.29854014882472, 0.583311783714593, 0.650871260739756, -0.000391966126701203, 
1.23053193924217, 1.70030189473426, -0.576054488536938, 0.0291802126175275, 
1.43019460222912, -1.0301194391522, 0.672348388347025, -0.173407147880241, 
-1.5368071194984, 0.676906374446062, 0.245381059292165, 0.192944401742425, 
-1.22846757821128, 0.761438857461385, -1.49010138930763), X6 = c(-1.18944760538218, 
-1.29854014882472, 0.583311783714593, 0.650871260739756, -0.000391966126701203, 
1.23053193924217, 1.70030189473426, -0.576054488536938, 0.0291802126175275, 
1.43019460222912, -1.0301194391522, 0.672348388347025, -0.173407147880241, 
-1.5368071194984, 0.676906374446062, 0.245381059292165, 0.192944401742425, 
-1.22846757821128, 0.761438857461385, -1.49010138930763), X7 = c(-1.18944760538218, 
-1.29854014882472, 0.583311783714593, 0.650871260739756, -0.000391966126701203, 
1.23053193924217, 1.70030189473426, -0.576054488536938, 0.0291802126175275, 
1.43019460222912, -1.0301194391522, 0.672348388347025, -0.173407147880241, 
-1.5368071194984, 0.676906374446062, 0.245381059292165, 0.192944401742425, 
-1.22846757821128, 0.761438857461385, -1.49010138930763), X8 = c(-1.18944760538218, 
-1.29854014882472, 0.583311783714593, 0.650871260739756, -0.000391966126701203, 
1.23053193924217, 1.70030189473426, -0.576054488536938, 0.0291802126175275, 
1.43019460222912, -1.0301194391522, 0.672348388347025, -0.173407147880241, 
-1.5368071194984, 0.676906374446062, 0.245381059292165, 0.192944401742425, 
-1.22846757821128, 0.761438857461385, -1.49010138930763)), class = "data.frame", row.names = c(NA, 
-20L))

              X1            X2            X3            X4            X5
1  -1.1894476054 -1.1894476054 -1.1894476054 -1.1894476054 -1.1894476054
2  -1.2985401488 -1.2985401488 -1.2985401488 -1.2985401488 -1.2985401488
3   0.5833117837  0.5833117837  0.5833117837  0.5833117837  0.5833117837
4   0.6508712607  0.6508712607  0.6508712607  0.6508712607  0.6508712607
5  -0.0003919661 -0.0003919661 -0.0003919661 -0.0003919661 -0.0003919661
6   1.2305319392  1.2305319392  1.2305319392  1.2305319392  1.2305319392
7   1.7003018947  1.7003018947  1.7003018947  1.7003018947  1.7003018947
8  -0.5760544885 -0.5760544885 -0.5760544885 -0.5760544885 -0.5760544885
9   0.0291802126  0.0291802126  0.0291802126  0.0291802126  0.0291802126
10  1.4301946022  1.4301946022  1.4301946022  1.4301946022  1.4301946022
11 -1.0301194392 -1.0301194392 -1.0301194392 -1.0301194392 -1.0301194392
12  0.6723483883  0.6723483883  0.6723483883  0.6723483883  0.6723483883
13 -0.1734071479 -0.1734071479 -0.1734071479 -0.1734071479 -0.1734071479
14 -1.5368071195 -1.5368071195 -1.5368071195 -1.5368071195 -1.5368071195
15  0.6769063744  0.6769063744  0.6769063744  0.6769063744  0.6769063744
16  0.2453810593  0.2453810593  0.2453810593  0.2453810593  0.2453810593
17  0.1929444017  0.1929444017  0.1929444017  0.1929444017  0.1929444017
18 -1.2284675782 -1.2284675782 -1.2284675782 -1.2284675782 -1.2284675782
19  0.7614388575  0.7614388575  0.7614388575  0.7614388575  0.7614388575
20 -1.4901013893 -1.4901013893 -1.4901013893 -1.4901013893 -1.4901013893
              X6            X7            X8
1  -1.1894476054 -1.1894476054 -1.1894476054
2  -1.2985401488 -1.2985401488 -1.2985401488
3   0.5833117837  0.5833117837  0.5833117837
4   0.6508712607  0.6508712607  0.6508712607
5  -0.0003919661 -0.0003919661 -0.0003919661
6   1.2305319392  1.2305319392  1.2305319392
7   1.7003018947  1.7003018947  1.7003018947
8  -0.5760544885 -0.5760544885 -0.5760544885
9   0.0291802126  0.0291802126  0.0291802126
10  1.4301946022  1.4301946022  1.4301946022
11 -1.0301194392 -1.0301194392 -1.0301194392
12  0.6723483883  0.6723483883  0.6723483883
13 -0.1734071479 -0.1734071479 -0.1734071479
14 -1.5368071195 -1.5368071195 -1.5368071195
15  0.6769063744  0.6769063744  0.6769063744
16  0.2453810593  0.2453810593  0.2453810593
17  0.1929444017  0.1929444017  0.1929444017
18 -1.2284675782 -1.2284675782 -1.2284675782
19  0.7614388575  0.7614388575  0.7614388575
20 -1.4901013893 -1.4901013893 -1.4901013893

我想建立一系列的回归,比如说所有其他回归的第一列,一次一列。为此,我编写以下循环:

for (i in df[,-c(1)]) {

model <- lm(df$X1 ~ i)
print(summary(model))

}
for(i在df中[,-c(1)]){
型号| t |)
(截距)-3.103e-18 3.693e-17-8.400e-02 0.934

i 1.000e+00 3.748e-17 2.668e+16如果您真的需要将其放入输出的调用部分,则需要使用所有需要的符号构建表达式,然后对其求值。代码看起来有点混乱,但类似于

for (i in names(df)[-1]) {
  model <- do.call("lm", list(reformulate(i, "X1"), quote(df)))
  print(summary(model))
}
for(i在名称中(df)[-1]){

非常感谢!非常有帮助。一旦SE允许,我会将其标记为正确答案
for (i in names(df)[-1]) {
  model <- do.call("lm", list(reformulate(i, "X1"), quote(df)))
  print(summary(model))
}