R语言如何根据指定城市筛选动态指定列的对应数值
解决方案
基础R实现
直接使用方括号索引即可,字符串形式的列名可以直接作为列索引传入,drop=TRUE参数保证返回向量而非单列数据框:
result <- df[df$City == city, nominal, drop = TRUE]
测试示例:
city <- "City_1" nominal <- "Age" # 运行后result值为 c(1, 2),符合预期
dplyr(tidyverse)实现
如果使用tidyverse生态的工具,用all_of()函数解析字符串格式的列名即可避免非标准评估的报错问题:
library(dplyr) result <- df %>% filter(City == city) %>% pull(all_of(nominal))
完整验证代码
你可以用下面的代码完整复现测试效果:
# 构造示例数据集 df <- data.frame( City = c("City_1", "City_1", "City_2", "City_3"), TreeID = c("X", "Y", "Y", "X"), Age = c(1, 2, 3, 4), Diameter = c(6, 5, 5, 10) ) # 测试参数 city <- "City_1" nominal <- "Age" # 基础R方案运行 result_base <- df[df$City == city, nominal, drop = TRUE] print(result_base) # 输出 1 2 # dplyr方案运行 library(dplyr) result_dplyr <- df %>% filter(City == city) %>% pull(all_of(nominal)) print(result_dplyr) # 输出 1 2
内容的提问来源于stack exchange,提问作者Michael
相关产品推荐
相关产品推荐

