Example 1: 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
Example 2: cbind vectors of different lengths r
x <- 1:2
y <- 1:10
n <- max(length(x), length(y))
length(x) <- n
length(y) <- n
Example 3: cbind vectors of different lengths r
> l <- lapply(c(3,2,1,2,3),seq)
> lapply(c("t","l","b","r"), bind.pad, l=l, len=4)
[[1]]
[,1] [,2] [,3] [,4] [,5]
[1,] NA NA NA NA NA
[2,] 1 NA NA NA 1
[3,] 2 1 NA 1 2
[4,] 3 2 1 2 3
[[2]]
[,1] [,2] [,3] [,4]
[1,] NA 1 2 3
[2,] NA NA 1 2
[3,] NA NA NA 1
[4,] NA NA 1 2
[5,] NA 1 2 3
[[3]]
[,1] [,2] [,3] [,4] [,5]
[1,] 1 1 1 1 1
[2,] 2 2 NA 2 2
[3,] 3 NA NA NA 3
[4,] NA NA NA NA NA
[[4]]
[,1] [,2] [,3] [,4]
[1,] 1 2 3 NA
[2,] 1 2 NA NA
[3,] 1 NA NA NA
[4,] 1 2 NA NA
[5,] 1 2 3 NA