You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言如何根据列表名称匹配数据框向量生成对应新列

解法1:使用dplyr::recode(最简洁的tidyverse写法)

直接通过!!!语法注入命名列表的映射关系,指定未匹配值返回原值即可:

library(tidyverse)

mydf2 <- mydf %>%
  mutate(value2 = recode(value, !!!unlist(mylist), .default = value))

解法2:使用case_when实现(符合你提到的语法思路)

先判断值是否在列表名称中,匹配成功则取对应列表值,否则保留原值:

mydf2 <- mydf %>%
  mutate(value2 = case_when(
    value %in% names(mylist) ~ unlist(mylist)[value],
    .default = value
  ))

解法3:基础R实现(无需加载第三方包)

通过向量索引匹配后补全缺失值即可:

mydf$value2 <- unlist(mylist)[mydf$value]
mydf$value2[is.na(mydf$value2)] <- mydf$value[is.na(mydf$value2)]

以上三种方法输出的结果都和你提供的预期输出完全一致。


内容的提问来源于stack exchange,提问作者JRR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 02:45:10