我有以下数据框:
df <- data.frame(
x = rep(letters[1:3], 2)
)
以及以下向量:
vec <- c(1.5, 3.2)
此向量属于b
中的每个df
。如果vec
与b
相匹配,如何进行变异,如果不匹配则返回NA
的值?
预期结果:
1 a NA
2 b 1.5
3 c NA
4 a NA
5 b 3.2
6 c NA
答案 0 :(得分:5)
最简单的方法是获取索引“ 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
另一个选择是replace
df$output <- replace(df$output, df$x == "b", vec)
强行将其放入tidyverse
library(dplyr)
df$output <- NA
df %>%
mutate(output = replace(output, x == "b", vec))