在R中聚合多个数据集

在R中聚合多个数据集,r,R,我在R中有几个数据帧对象 dataset1 dataset2 dataset3 ... 我试图使用循环使用rbind命令对它们进行行绑定,但是我很难将循环索引循环到数据集索引的字符串中 x=dataset1 for (i in 2:n-1){ assign(x,rbind(x,paste("dataset",i))) } 或者,以下方法是否更有效: x=rbind(x,paste("dataset",i)) 我遗漏了什么?您只是想rbind几个数据帧?尝试以下方法: df1 <-

我在R中有几个数据帧对象

dataset1
dataset2
dataset3
...
我试图使用循环使用rbind命令对它们进行行绑定,但是我很难将循环索引循环到数据集索引的字符串中

x=dataset1
for (i in 2:n-1){
  assign(x,rbind(x,paste("dataset",i)))
}
或者,以下方法是否更有效:

x=rbind(x,paste("dataset",i))

我遗漏了什么?

您只是想
rbind
几个数据帧?尝试以下方法:

df1 <- df2 <- df3 <- mtcars

df <- do.call(rbind, list(df1, df2, df3))

这两种方法都不起作用:
paste
只是创建一个字符串,可以是
rbind
ing或
assign
ing

我想你要找的是
eval(parse(text=…)
。因此,类似这样的方法会起作用:

datasets <- sapply(1:n, function(i) paste0("dataset", i))
expr <- paste0("rbind(", paste(datasets, collapse=", "), ")")
x <- eval(parse(text=expr))
那么现在,如果您尝试
rbind
将其绑定到某个数据集,会发生什么?让我们尝试使用虚拟数据集:

dataset1 <- head(mtcars)
dataset1
##                    mpg cyl disp  hp drat    wt  qsec vs am gear carb
## Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
## Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
## Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
## Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
## Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
## Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1

i <- 2
x <- rbind(dataset1, paste("dataset", i)
x
##                         mpg       cyl      disp        hp      drat        wt      qsec        ## vs        am      gear      carb
## Mazda RX4                21         6       160       110       3.9      2.62     16.46         ## 0         1         4         4
## Mazda RX4 Wag            21         6       160       110       3.9     2.875     17.02         ## 0         1         4         4
## Datsun 710             22.8         4       108        93      3.85      2.32     18.61         ## 1         1         4         1
## Hornet 4 Drive         21.4         6       258       110      3.08     3.215     19.44         ## 1         0         3         1
## Hornet Sportabout      18.7         8       360       175      3.15      3.44     17.02         ## 0         0         3         2
## Valiant                18.1         6       225       105      2.76      3.46     20.22         ## 1         0         3         1
## 7                 dataset 2 dataset 2 dataset 2 dataset 2 dataset 2 dataset 2 dataset 2 ## dataset 2 dataset 2 dataset 2 dataset 2
那么现在您的第一个代码块出了什么问题:

x=dataset1
for (i in 2:n-1){
  assign(x,rbind(x,paste("dataset",i)))
}
首先,您将收到此错误:

Error in assign(x, rbind(x, paste("dataset", i))) : 
  invalid first argument
assign
实际上接受一个字符串,而不是一个变量,并为其赋值:

assign("y", 5)
y
## [1] 5
这就是为什么你会看到这个错误。那么,如果将其改为
“x”
,会发生什么情况呢

x=dataset1
for (i in 2:n-1){
  assign("x",rbind(x,paste("dataset",i)))
}
在assign命令的第二个参数中,您已经看到了上面的内容。它将向现有的
x
中添加一行包含“数据集i”<代码>分配将其分配回
x
。因此,最终结果是:

                         mpg        cyl       disp         hp       drat         wt       qsec         vs         am       gear       carb
Mazda RX4                 21          6        160        110        3.9       2.62      16.46          0          1          4          4
Mazda RX4 Wag             21          6        160        110        3.9      2.875      17.02          0          1          4          4
Datsun 710              22.8          4        108         93       3.85       2.32      18.61          1          1          4          1
Hornet 4 Drive          21.4          6        258        110       3.08      3.215      19.44          1          0          3          1
Hornet Sportabout       18.7          8        360        175       3.15       3.44      17.02          0          0          3          2
Valiant                 18.1          6        225        105       2.76       3.46      20.22          1          0          3          1
7                  dataset 2  dataset 2  dataset 2  dataset 2  dataset 2  dataset 2  dataset 2  dataset 2  dataset 2  dataset 2  dataset 2
8                  dataset 1  dataset 1  dataset 1  dataset 1  dataset 1  dataset 1  dataset 1  dataset 1  dataset 1  dataset 1  dataset 1
9                  dataset 2  dataset 2  dataset 2  dataset 2  dataset 2  dataset 2  dataset 2  dataset 2  dataset 2  dataset 2  dataset 2
10                 dataset 3  dataset 3  dataset 3  dataset 3  dataset 3  dataset 3  dataset 3  dataset 3  dataset 3  dataset 3  dataset 3
11                 dataset 4  dataset 4  dataset 4  dataset 4  dataset 4  dataset 4  dataset 4  dataset 4  dataset 4  dataset 4  dataset 4
12                 dataset 5  dataset 5  dataset 5  dataset 5  dataset 5  dataset 5  dataset 5  dataset 5  dataset 5  dataset 5  dataset 5
13                 dataset 6  dataset 6  dataset 6  dataset 6  dataset 6  dataset 6  dataset 6  dataset 6  dataset 6  dataset 6  dataset 6
14                 dataset 7  dataset 7  dataset 7  dataset 7  dataset 7  dataset 7  dataset 7  dataset 7  dataset 7  dataset 7  dataset 7
15                 dataset 8  dataset 8  dataset 8  dataset 8  dataset 8  dataset 8  dataset 8  dataset 8  dataset 8  dataset 8  dataset 8
16                 dataset 9  dataset 9  dataset 9  dataset 9  dataset 9  dataset 9  dataset 9  dataset 9  dataset 9  dataset 9  dataset 9
17                dataset 10 dataset 10 dataset 10 dataset 10 dataset 10 dataset 10 dataset 10 dataset 10 dataset 10 dataset 10 dataset 10
18                dataset 11 dataset 11 dataset 11 dataset 11 dataset 11 dataset 11 dataset 11 dataset 11 dataset 11 dataset 11 dataset 11
19                dataset 12 dataset 12 dataset 12 dataset 12 dataset 12 dataset 12 dataset 12 dataset 12 dataset 12 dataset 12 dataset 12
20                dataset 13 dataset 13 dataset 13 dataset 13 dataset 13 dataset 13 dataset 13 dataset 13 dataset 13 dataset 13 dataset 13
21                dataset 14 dataset 14 dataset 14 dataset 14 dataset 14 dataset 14 dataset 14 dataset 14 dataset 14 dataset 14 dataset 14
22                dataset 15 dataset 15 dataset 15 dataset 15 dataset 15 dataset 15 dataset 15 dataset 15 dataset 15 dataset 15 dataset 15
23                dataset 16 dataset 16 dataset 16 dataset 16 dataset 16 dataset 16 dataset 16 dataset 16 dataset 16 dataset 16 dataset 16
24                dataset 17 dataset 17 dataset 17 dataset 17 dataset 17 dataset 17 dataset 17 dataset 17 dataset 17 dataset 17 dataset 17
25                dataset 18 dataset 18 dataset 18 dataset 18 dataset 18 dataset 18 dataset 18 dataset 18 dataset 18 dataset 18 dataset 18
26                dataset 19 dataset 19 dataset 19 dataset 19 dataset 19 dataset 19 dataset 19 dataset 19 dataset 19 dataset 19 dataset 19

如果您可以将中的数据集作为列表读取,那么它们将更易于使用,并且您不会遇到此问题<代码>库(财富);《财富》(“parse()”)谢谢Scotty的夸奖!!虽然我仍然不明白为什么我之前写的代码不起作用。我已经更新了我的答案,并讨论了如果你运行代码会发生什么。希望这能让事情变得更清楚!在第二个代码块中获得
tmp
后,仍然需要
rbind
数据集列表。这显然是为了演示
get
。我已经用第一个blockTrue回答了这个问题,但是如何将它们结合起来可能并不明显。回答用户的原始问题:
x
assign("y", 5)
y
## [1] 5
x=dataset1
for (i in 2:n-1){
  assign("x",rbind(x,paste("dataset",i)))
}
                         mpg        cyl       disp         hp       drat         wt       qsec         vs         am       gear       carb
Mazda RX4                 21          6        160        110        3.9       2.62      16.46          0          1          4          4
Mazda RX4 Wag             21          6        160        110        3.9      2.875      17.02          0          1          4          4
Datsun 710              22.8          4        108         93       3.85       2.32      18.61          1          1          4          1
Hornet 4 Drive          21.4          6        258        110       3.08      3.215      19.44          1          0          3          1
Hornet Sportabout       18.7          8        360        175       3.15       3.44      17.02          0          0          3          2
Valiant                 18.1          6        225        105       2.76       3.46      20.22          1          0          3          1
7                  dataset 2  dataset 2  dataset 2  dataset 2  dataset 2  dataset 2  dataset 2  dataset 2  dataset 2  dataset 2  dataset 2
8                  dataset 1  dataset 1  dataset 1  dataset 1  dataset 1  dataset 1  dataset 1  dataset 1  dataset 1  dataset 1  dataset 1
9                  dataset 2  dataset 2  dataset 2  dataset 2  dataset 2  dataset 2  dataset 2  dataset 2  dataset 2  dataset 2  dataset 2
10                 dataset 3  dataset 3  dataset 3  dataset 3  dataset 3  dataset 3  dataset 3  dataset 3  dataset 3  dataset 3  dataset 3
11                 dataset 4  dataset 4  dataset 4  dataset 4  dataset 4  dataset 4  dataset 4  dataset 4  dataset 4  dataset 4  dataset 4
12                 dataset 5  dataset 5  dataset 5  dataset 5  dataset 5  dataset 5  dataset 5  dataset 5  dataset 5  dataset 5  dataset 5
13                 dataset 6  dataset 6  dataset 6  dataset 6  dataset 6  dataset 6  dataset 6  dataset 6  dataset 6  dataset 6  dataset 6
14                 dataset 7  dataset 7  dataset 7  dataset 7  dataset 7  dataset 7  dataset 7  dataset 7  dataset 7  dataset 7  dataset 7
15                 dataset 8  dataset 8  dataset 8  dataset 8  dataset 8  dataset 8  dataset 8  dataset 8  dataset 8  dataset 8  dataset 8
16                 dataset 9  dataset 9  dataset 9  dataset 9  dataset 9  dataset 9  dataset 9  dataset 9  dataset 9  dataset 9  dataset 9
17                dataset 10 dataset 10 dataset 10 dataset 10 dataset 10 dataset 10 dataset 10 dataset 10 dataset 10 dataset 10 dataset 10
18                dataset 11 dataset 11 dataset 11 dataset 11 dataset 11 dataset 11 dataset 11 dataset 11 dataset 11 dataset 11 dataset 11
19                dataset 12 dataset 12 dataset 12 dataset 12 dataset 12 dataset 12 dataset 12 dataset 12 dataset 12 dataset 12 dataset 12
20                dataset 13 dataset 13 dataset 13 dataset 13 dataset 13 dataset 13 dataset 13 dataset 13 dataset 13 dataset 13 dataset 13
21                dataset 14 dataset 14 dataset 14 dataset 14 dataset 14 dataset 14 dataset 14 dataset 14 dataset 14 dataset 14 dataset 14
22                dataset 15 dataset 15 dataset 15 dataset 15 dataset 15 dataset 15 dataset 15 dataset 15 dataset 15 dataset 15 dataset 15
23                dataset 16 dataset 16 dataset 16 dataset 16 dataset 16 dataset 16 dataset 16 dataset 16 dataset 16 dataset 16 dataset 16
24                dataset 17 dataset 17 dataset 17 dataset 17 dataset 17 dataset 17 dataset 17 dataset 17 dataset 17 dataset 17 dataset 17
25                dataset 18 dataset 18 dataset 18 dataset 18 dataset 18 dataset 18 dataset 18 dataset 18 dataset 18 dataset 18 dataset 18
26                dataset 19 dataset 19 dataset 19 dataset 19 dataset 19 dataset 19 dataset 19 dataset 19 dataset 19 dataset 19 dataset 19