The matrices are bound together using their column names or the column indices (in that order of precedence.) Numeric columns may be converted to character beforehand, e.g. using format. If a matrix doesn't have colnames, the column number is used (via [make.names][base::make.names](unique = TRUE)).

rbinds a list of data frames filling missing columns with NA.

# S3 method for matrix
rbind.fill(...)

# S3 method for fill
rbind(...)

Arguments

...

data frames/matrices to row bind together

Value

a matrix

Details

Note that this means that a column with name "X1" is merged with the first column of a matrix without name and so on.

Vectors are converted to 1-column matrices prior to rbind.

Matrices of factors are not supported. (They are anyways quite inconvenient.) You may convert them first to either numeric or character matrices. If a character matrix is merged with a numeric, the result will be character.

Row names are ignored.

The return matrix will always have column names.

This is an enhancement to rbind() which adds in columns that are not present in all inputs, accepts a list of data frames, and operates substantially faster

Author

C. Beleites

Examples

A <- matrix(1:4, 2)
B <- matrix(6:11, 2)
A
#>      [,1] [,2]
#> [1,]    1    3
#> [2,]    2    4
B
#>      [,1] [,2] [,3]
#> [1,]    6    8   10
#> [2,]    7    9   11
hyperSpec:::rbind.fill.matrix(A, B)
#>      X1 X2 X3
#> [1,]  1  3 NA
#> [2,]  2  4 NA
#> [3,]  6  8 10
#> [4,]  7  9 11

colnames(A) <- c(3, 1)
A
#>      3 1
#> [1,] 1 3
#> [2,] 2 4
hyperSpec:::rbind.fill.matrix(A, B)
#>       3  1 X1 X2 X3
#> [1,]  1  3 NA NA NA
#> [2,]  2  4 NA NA NA
#> [3,] NA NA  6  8 10
#> [4,] NA NA  7  9 11

hyperSpec:::rbind.fill.matrix(A, 99)
#>       3  1 X1
#> [1,]  1  3 NA
#> [2,]  2  4 NA
#> [3,] NA NA 99
# rbind.fill(mtcars[c("mpg", "wt")], mtcars[c("wt", "cyl")])