在不改变长度的情况下用逻辑向量索引向量

时间:2019-05-10 11:53:04

标签: r

我需要在一行中查找重复的列条目。我有一个逻辑向量,当列arent在该行中重复时为true,在列为false时为true。我想使用此逻辑向量来删除重复的条目,但是当我执行此var2 [逻辑向量]时,长度会更改,因为仅保留true的值,并删除了带有false的行,但是我希望保留这些只是不为人知或为空。这可能吗?

如此

/* do stuff */

我有逻辑矢量1 a b 2 a b 3 a a 4 a a 5 a b

我想用这个框架和这个向量来获得

[TRUE, TRUE, FALSE, FALSE, TRUE]

1 a b
2 a b
3 a
4 a
5 a b

这可能吗?

1 个答案:

答案 0 :(得分:0)

case_when中的

dplyr解决了您的问题,而无需明确指定逻辑向量

library(dplyr)
df = data.frame(col1 = c("a", "a", "a", "a", "a"), 
                col2 = c("b", "b", "a", "a", "b"), 
                stringsAsFactors = F)
df %>% 
  mutate(col2 = case_when(col1 == col2 ~ NA_character_,
                          col1 != col2 ~ col2))

  col1 col2
1    a    b
2    a    b
3    a <NA>
4    a <NA>
5    a    b