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

寻找tidyverse中替代which()括号匹配的简洁取值方法

根据数据框列值匹配返回对应列的单个值

示例数据

df <- data.frame(x = rep(c("a", "b"),3), y = 1:6)
print(df)
#   x y
# 1 a 1
# 2 b 2
# 3 a 3
# 4 b 4
# 5 a 5
# 6 b 6

简化实现方法

Base R 简化写法

  • 直接省略which(),利用逻辑向量完成索引:
    df$x[df$y == 4]
    # [1] "b"
    
  • 用with()减少重复输入df$,写法更简洁:
    with(df, x[y == 4])
    # [1] "b"
    

Tidyverse (dplyr) 方法

用filter()筛选目标行,再通过pull()提取指定列:

library(dplyr)

df %>% filter(y == 4) %>% pull(x)
# [1] "b"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 07:13:16