R用相同的值填充向量,直到找到另一个

时间:2018-11-15 14:20:52

标签: r vector fill

在R中,我有两个向量,例如

2 NA NA  1 NA NA
1 NA  2 NA NA NA

我希望他们像

2 2 2 1 1 1
1 1 2 2 2 2

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

使用tidyverse

 read.table(text="2 NA NA  1 NA NA
                  1 NA  2 NA NA NA")%>%
    t()%>%
   data.frame()%>%
   mutate_all(funs(as.numeric(.)))%>%
   fill(c(X1,X2))%>%t

   [,1] [,2] [,3] [,4] [,5] [,6]
X1    2    2    2    1    1    1
X2    1    1    2    2    2    2

答案 1 :(得分:0)

向量:

a <- c(2, NA, NA,  1, NA, NA)
b <- c(1, NA,  2, NA, NA, NA)

作为匿名函数:

(function(x) {
    nai <- which(is.na(x))
    i <- which(!is.na(x))

    x[nai] <- x[i][findInterval(nai,i)]
    return(x)
 })

致电:

    (function(x) {
        nai <- which(is.na(x))
        i <- which(!is.na(x))

        x[nai] <- x[i][findInterval(nai,i)]
        return(x)
     })(a)
#[1] 2 2 2 1 1 1

    (function(x) {
        nai <- which(is.na(x))
        i <- which(!is.na(x))

        x[nai] <- x[i][findInterval(nai,i)]
        return(x)
     })(b)
#[1] 1 1 2 2 2 2