# Method 1: Combine data frames with different row numbers
df1 <- data.frame(a = 1:3)
df2 <- data.frame(b = 1:5)
df3 <- data.frame(c = 1:4) 
df4 <- data.frame(d = 1:6)


# Check data frames
df1; df2; df3; df4
##   a
## 1 1
## 2 2
## 3 3
##   b
## 1 1
## 2 2
## 3 3
## 4 4
## 5 5
##   c
## 1 1
## 2 2
## 3 3
## 4 4
##   d
## 1 1
## 2 2
## 3 3
## 4 4
## 5 5
## 6 6
# Get maximum number of rows across all data frames
max_rows <- max(sapply(list(df1, df2, df3, df4), nrow))
max_rows
## [1] 6
# Combine using data.frame() - automatically fills with NA
result <- data.frame(
  df1[seq_len(max_rows),],  # seq_len is safer than 1:max_rows
  df2[seq_len(max_rows),],
  df3[seq_len(max_rows),],
  df4[seq_len(max_rows),]
)
result
##   df1.seq_len.max_rows.... df2.seq_len.max_rows.... df3.seq_len.max_rows....
## 1                        1                        1                        1
## 2                        2                        2                        2
## 3                        3                        3                        3
## 4                       NA                        4                        4
## 5                       NA                        5                       NA
## 6                       NA                       NA                       NA
##   df4.seq_len.max_rows....
## 1                        1
## 2                        2
## 3                        3
## 4                        4
## 5                        5
## 6                        6
#########################
# Create list of all data frames (假设数据框命名为 df1, df2, ..., df100)
df_list <- mget(paste0("df", 1:4))

# Get max rows
max_rows <- max(sapply(df_list, nrow))

# Combine all at once
result <- do.call(data.frame, 
                  lapply(df_list, function(df) df[seq_len(max_rows),])
)
result 
##   df1 df2 df3 df4
## 1   1   1   1   1
## 2   2   2   2   2
## 3   3   3   3   3
## 4  NA   4   4   4
## 5  NA   5  NA   5
## 6  NA  NA  NA   6
##################################################
# Method 2: Combine data frames with different column names 
# Create sample data frames with different columns
df1 <- data.frame(
  a = 1:3,
  b = letters[1:3]
)
df2 <- data.frame(
  a = 4:6,
  b = letters[4:6],
  c = c("x", "y", "z")  # Extra column
)
df3 <- data.frame(
  a = 7:9,
  d = c("m", "n", "p")  # Different column name
)

# Check data frames
df1; df2; df3
##   a b
## 1 1 a
## 2 2 b
## 3 3 c
##   a b c
## 1 4 d x
## 2 5 e y
## 3 6 f z
##   a d
## 1 7 m
## 2 8 n
## 3 9 p
# Load dplyr package
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
# Combine using bind_rows() - automatically handles different columns
result <- bind_rows(df1, df2, df3)
result
##   a    b    c    d
## 1 1    a <NA> <NA>
## 2 2    b <NA> <NA>
## 3 3    c <NA> <NA>
## 4 4    d    x <NA>
## 5 5    e    y <NA>
## 6 6    f    z <NA>
## 7 7 <NA> <NA>    m
## 8 8 <NA> <NA>    n
## 9 9 <NA> <NA>    p
# Method 1: Using bind_rows with list
library(dplyr)

# Create list of all dataframes (assuming named df1, df2, ..., df100)
df_list <- mget(paste0("df", 1:3))

# Combine all at once
result <- bind_rows(df_list)
result
##   a    b    c    d
## 1 1    a <NA> <NA>
## 2 2    b <NA> <NA>
## 3 3    c <NA> <NA>
## 4 4    d    x <NA>
## 5 5    e    y <NA>
## 6 6    f    z <NA>
## 7 7 <NA> <NA>    m
## 8 8 <NA> <NA>    n
## 9 9 <NA> <NA>    p
my_list <- list(
  data.frame(a = 1:3),
  data.frame(b = 1:5),
  data.frame(c = 1:4),
  data.frame(d = 1:6)
)

library(dplyr)
# Get maximum number of rows
max_rows <- max(sapply(my_list, nrow))
result <- bind_cols(
  lapply(my_list, function(df) df[seq_len(max_rows),])
)
## New names:
## • `` -> `...1`
## • `` -> `...2`
## • `` -> `...3`
## • `` -> `...4`
result
## # A tibble: 6 × 4
##    ...1  ...2  ...3  ...4
##   <int> <int> <int> <int>
## 1     1     1     1     1
## 2     2     2     2     2
## 3     3     3     3     3
## 4    NA     4     4     4
## 5    NA     5    NA     5
## 6    NA    NA    NA     6