如何从矢量集中删除“NA”

时间:2017-03-25 01:56:09

标签: r for-loop dataframe

我有n - 尺寸向量w1w2w3。我需要从相应元素的每列中删除NA。 对于6 - 大小的向量:

w1 <- c(NA, NA, NA, NA,  2,  1) 
w2 <- c(NA, NA,  4,  3, NA, NA)
w3 <- c(6,  5, NA, NA, NA, NA)

预期结果为(6, 5, 4, 3, 2, 1)

我在data.frame中保存了向量:

df <- data.frame(w1, w2, w3)
remove <- c("NA")

然后尝试逐行删除NA

w <- c()
k <- nrow(df)

for(i in 1:k)
{
w <- c(w, df[i,] [! df[i,] %in% remove])
}

df <- data.frame(df, w=unlist(w))

我的结果是df $ w:

df
  w1 w2 w3 w
1 NA NA  6 6
2 NA NA  5 5
3 NA  4 NA 4
4 NA  3 NA 3
5  2 NA NA 2
6  1 NA NA 1

问题。有人可以指导我如何在没有for-loop的情况下以矢量形式重写代码吗?

1 个答案:

答案 0 :(得分:2)

如果start s中的每个对应元素只有一个非NA元素,我们可以使用pmax/pmin

vector