如何用R中另一个向量的相同索引替换向量的某些索引?

时间:2015-06-29 13:24:57

标签: r

我有两个向量(在R中),每个向量具有相同的长度。我想用向量B中的相应索引替换向量A中的所有负值。例如,如果向量A的索引5,7和9是负值,我想用向量A的索引5,7和9替换向量B中的索引5,7和9.

非常感谢!

1 个答案:

答案 0 :(得分:2)

以下是一种快捷方式:

a <- c(1,2,3,4,-5,6,-7,8,-9 )
b <- c(5,5,5,5, 5,5, 5,5, 5)
a[ a<0 ] <- b[ a<0 ]

的产率:

> a
[1] 1 2 3 4 5 6 5 8 5

要获得最快的结果,请使用a[ a<0 ] <- b[ a<0 ]

> microbenchmark(ifelse(a<0,b,a),a[ a<0 ] <- b[ a<0 ])
Unit: nanoseconds
                 expr  min   lq    mean median   uq   max neval
  ifelse(a < 0, b, a) 3137 3707 4497.14   3992 4277 33072   100
 a[a < 0] <- b[a < 0]  856 1141 1657.47   1426 1427 11120   100