insert elements in a vector in R

后端 未结 6 1554
悲哀的现实
悲哀的现实 2020-12-01 16:11

I have a vector in R,

a = c(2,3,4,9,10,2,4,19)

let us say I want to efficiently insert the following vectors, b, and c,

b =         


        
6条回答
  •  不知归路
    2020-12-01 16:34

    Here's an alternative that uses append. It's fine for small vectors, but I can't imagine it being efficient for large vectors since a new vector is created upon each iteration of the loop (which is, obviously, bad). The trick is to reverse the vector of things that need to be inserted to get append to insert them in the correct place relative to the original vector.

    a = c(2,3,4,9,10,2,4,19)
    b = c(2,1)
    d = c(0,1)
    
    pos <- c(3, 7)
    z <- setNames(list(b, d), pos)
    z <- z[order(names(z), decreasing=TRUE)]
    
    
    for (i in seq_along(z)) {
      a <- append(a, z[[i]], after = as.numeric(names(z)[[i]]))
    }
    
    a
    #  [1]  2  3  4  2  1  9 10  2  4  0  1 19
    

提交回复
热议问题