Answers for "r cbind vectors of unequal length"

R
2

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
Posted by: Guest on October-11-2020
0

cbind vectors of different lengths r

x <- 1:2
y <- 1:10
n <- max(length(x), length(y))
length(x) <- n                      
length(y) <- n
Posted by: Guest on June-21-2020
0

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
Posted by: Guest on June-21-2020

Browse Popular Code Answers by Language