индексирование вектора с помощью логического вектора без изменения длины - PullRequest
0 голосов
/ 10 мая 2019

Мне нужно найти повторяющиеся записи столбца в строке.у меня есть логический вектор для этого истина, когда столбцы не дублируются в этой строке и ложь, когда они есть.я хочу использовать этот логический вектор, чтобы удалить дублирующиеся записи, но когда я делаю это var2 [логический вектор], длина изменяется, так как сохраняются только значения для истины, а строки с ложными удаляются, однако я хочу, чтобы они были сохраненыи просто будь на или пустым.это возможно?

, поэтому для

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 a b
2 a b
3 a NA
4 a NA
5 a b

возможно ли это?

1 Ответ

0 голосов
/ 10 мая 2019

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...