rvector

Subtracting a named vector from another named vector


I have 2 vectors as below

Vec1 = c(1,2,3,4)
names(Vec1) = c('Val1', 'Val2', 'Val3', 'Val4')

Vec2 = c(10, 11)
names(Vec2) = c('Val2', 'Val4')

Is there any easy way to subtract Vec2 from Vec1 based on same names in the vector element? The names which are not available in Vec2 can be assumed to have zero value.


Solution

  • `[<-`(Vec1, names(Vec2), Vec1[names(Vec2)] - Vec2)
    
    ## OR using replace() without creating a helper variable
    
    Vec1 |> replace(names(Vec2), Vec1[names(Vec2)] - Vec2)
    

    Result:

    #> Val1 Val2 Val3 Val4 
    #>    1   -8    3   -7