我有两个向量(在R中),每个向量具有相同的长度。我想用向量B中的相应索引替换向量A中的所有负值。例如,如果向量A的索引5,7和9是负值,我想用向量A的索引5,7和9替换向量B中的索引5,7和9.
非常感谢!
答案 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