Tengo dos vectores numéricos:

a <- c(1,2,3,4,5,6,7,8)
b <- c(4,2,2,3,9,10,7,7,10,14)

Quiero establecer cualquier número en b que no aparezca en a a cero. Mi resultado deseado es:

c <- c(4,2,2,3,0,0,7,7,0,0)

¿A quién puedo hacer esto de una manera elegante?

(Estaba pensando en usar left_join pero creo que debe haber un enfoque más elegante)

2
Carbo 28 may. 2020 a las 18:46

4 respuestas

La mejor respuesta

Puede hacerlo subconjustando b con la función %in%:

b[! b %in% a] <- 0
2
Cettt 28 may. 2020 a las 15:56

Nosotras podemos usar replace

replace(b, !b  %in% a, 0)
0
akrun 28 may. 2020 a las 19:03

Use la negación de la condición %in%:

b[!b %in% a] <- 0
2
Sandy AB 28 may. 2020 a las 15:56

Ifelse (b% en% a, b, 0) parece hacerlo.

1
Chuck P 28 may. 2020 a las 15:56