【问题标题】:How to remove `NA` from set of vectors如何从向量集中删除“NA”
【发布时间】:2017-03-25 01:56:09
【问题描述】:

我有n-size 向量w1w2w3。我需要从对应元素的每一列中删除NA。 对于6-size 向量:

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 的情况下以矢量形式重写代码吗?

【问题讨论】:

标签: r for-loop dataframe


【解决方案1】:

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

pmax(w1, w2, w3, na.rm = TRUE)
#[1] 6 5 4 3 2 1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-23
    • 2012-10-30
    • 1970-01-01
    • 1970-01-01
    • 2021-12-25
    相关资源
    最近更新 更多