r - 条件变异和向量

标签 r dplyr tidyverse

我有以下数据框:

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

和下面的向量:

vec <- c(1.5, 3.2)

这个向量属于df中的每一个b。如果 vecb 匹配,我如何对其进行变异,如果不匹配,如何返回 NA 值?

预期结果:

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

最佳答案

最简单的方法是获取“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))

关于r - 条件变异和向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52270990/

相关文章:

r - 检查变量是否是R中的数字

r - 如何从使用 write.table 创建的 CSV 文件中删除尾随空格或换行符?

R quo_name等同于quos

从数据框中按组随机抽取 2 个独立的 100 个模拟

r - 如何使用 dplyr 分组进行统计测试,然后用扫帚制作 tibble

R:当字符串超过设置长度时,在 grid.table 中换行文本

regex - R正则表达式在rstudio中查找和替换代码

r - 如何从 dplyr 管道中解压 group_by() do() 输出

r - 收集虚拟变量和重新编码因子

r - 使用 tidyverse 创建一个以恒定速率增加的列