1
我有两个向量,我希望的第三载体,其是在第一向量的NA位置条件condititonal级联
a= c(1,2,NA,NA,3,NA,NA,5)
b= c("a","b","c","d","e","f","g","h")
desired output= c("a","b c d",NA,NA,"e f g",NA,NA,"h")
我有两个向量,我希望的第三载体,其是在第一向量的NA位置条件condititonal级联
a= c(1,2,NA,NA,3,NA,NA,5)
b= c("a","b","c","d","e","f","g","h")
desired output= c("a","b c d",NA,NA,"e f g",NA,NA,"h")
我们可以使用经由zoo::na.locf()
分组粘贴值一起通过tapply()
。然后我们将它们替换为原始矢量。 !
replace(a, !is.na(a), tapply(b, zoo::na.locf(a), paste, collapse = " "))
# [1] "a" "b c d" NA NA "e f g" NA NA "h"
在基础R你能做到这一点...
x <- a
x[!is.na(a)] <- tapply(b, cumsum(!is.na(a)), paste, collapse=" ")
x
[1] "a" "b c d" NA NA "e f g" NA NA "h"
可以在is.na的cumsum组,我想 – Frank
@Frank - 我试过了。但新的答案出现在同一个想法中,所以我会按原样离开。 –