在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
有什么想法吗?
答案 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