FMM
FMM

Reputation: 2005

Conditional mutate and vector

I have the following data frame:

df <- data.frame(
  x = rep(letters[1:3], 2)
)

And the following vector:

vec <- c(1.5, 3.2)

This vector belongs to each b in df. How do I mutate vec if it matches b and return NA values if not?

Expected outcome:

1                    a                          NA
2                    b                         1.5
3                    c                          NA
4                    a                          NA
5                    b                         3.2
6                    c                          NA

Upvotes: 2

Views: 233

Answers (1)

Ronak Shah
Ronak Shah

Reputation: 388982

Simplest way would be to get indexes of "b" and replace them with vec.

df$output[df$x == "b"] <- vec

df
#  x output
#1 a     NA
#2 b    1.5
#3 c     NA
#4 a     NA
#5 b    3.2
#6 c     NA

Another option is with replace

df$output <- replace(df$output, df$x == "b", vec)

Forcefully, fitting this into tidyverse

library(dplyr)

df$output <- NA
df %>%
  mutate(output = replace(output, x == "b", vec))

Upvotes: 6

Related Questions