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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 11:06:04