条件变异和矢量

FMM*_*FMM 2 r dplyr tidyverse

我有以下数据框:

df <- data.frame(
  x = rep(letters[1:3], 2)
)
Run Code Online (Sandbox Code Playgroud)

以下向量:

vec <- c(1.5, 3.2)
Run Code Online (Sandbox Code Playgroud)

该载体属于每个bdf.vec如果匹配则如何变异b并返回NA值?

预期结果:

1                    a                          NA
2                    b                         1.5
3                    c                          NA
4                    a                          NA
5                    b                         3.2
6                    c                          NA
Run Code Online (Sandbox Code Playgroud)

Ron*_*hah 6

最简单的方法是获取"b"的索引并替换它们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
Run Code Online (Sandbox Code Playgroud)

另一种选择是 replace

df$output <- replace(df$output, df$x == "b", vec)
Run Code Online (Sandbox Code Playgroud)

有力地,适应这一点 tidyverse

library(dplyr)

df$output <- NA
df %>%
  mutate(output = replace(output, x == "b", vec))
Run Code Online (Sandbox Code Playgroud)