如何基于指定列表替换DataFrame中特定行的列值
R语言高效替换指定ID的freq值
基础R解决方案
利用向量化操作%in%快速匹配目标ID,直接赋值替换,无需额外依赖包,处理大数据量效率优异:
# 提取需要替换的ID集合 target_ids <- list$id # 匹配ID并将对应freq值替换为1 df$freq[df$id %in% target_ids] <- 1
tidyverse(dplyr)解决方案
若习惯使用tidyverse语法,可通过mutate结合if_else实现:
library(dplyr) df <- df %>% mutate(freq = if_else(id %in% list$id, 1L, freq))
额外提示
变量名list是R的内置函数名,建议重命名为id_list这类无冲突名称,避免潜在语法错误:
# 重命名数据框规避冲突 id_list <- list rm(list) # 使用重命名后的对象进行匹配 df$freq[df$id %in% id_list$id] <- 1
内容的提问来源于stack exchange,提问作者jocho
相关产品推荐
相关产品推荐

