r cbind vectors of unequal length
# Example usage:
# If you have several vectors that you want to combine column-wise
# or row-wise without repeating values from the shorter vectors,
# here is the easiest approach for doing that that I've found:
# Define vectors:
vector_1 <- c("a","b","c")
vector_2 <- c("d","e","f", "g")
vector_3 <- c("h","i","j", "k", "l")
# Add NAs to shorter vectors:
n = max(length(vector_1), length(vector_2), length(vector_3))
length(vector_1) = n
length(vector_2) = n
length(vector_3) = n
cbind(vector_1, vector_2, vector_3)
vector_1 vector_2 vector_3
[1,] "a" "d" "h"
[2,] "b" "e" "i"
[3,] "c" "f" "j"
[4,] NA "g" "k"
[5,] NA NA "l"
rbind(vector_1, vector_2, vector_3)
[,1] [,2] [,3] [,4] [,5]
vector_1 "a" "b" "c" NA NA
vector_2 "d" "e" "f" "g" NA
vector_3 "h" "i" "j" "k" "l"
# Note, this can also be done with cbind.na (see below) and rbind.na
# Basic syntax for cbind.na:
# Use cbind.na which is an internal function of the qpcR package
qpcR:::cbind.na()
# Example usage:
# Install package
install.packages("qpcR")
library(qpcR)
# Define vectors:
col1 <- c("a","b","c")
col2 <- c("d","e","f", "g")
col3 <- c("h","i","j", "k", "l")
# Run regular cbind for comparison:
cbind(col1, col2, col3)
col1 col2 col3
[1,] "a" "d" "h"
[2,] "b" "e" "i"
[3,] "c" "f" "j"
[4,] "a" "g" "k" # Note that col1 has "a" and "b" repeated
[5,] "b" "d" "l" # col2 has "d" repeated
# Run cbind.na:
qpcR:::cbind(col1, col2, col3) # ::: is for calling internal functions
col1 col2 col3
[1,] "a" "d" "h"
[2,] "b" "e" "i"
[3,] "c" "f" "j"
[4,] NA "g" "k"
[5,] NA NA "l" # Shorter vectors have NA added instead of repeating