如何在R中根据Name和Current_Version动态获取对应版本列的值
动态获取指定版本列的值(base R & dplyr实现)
Base R 实现
通过动态匹配行索引和列名的方式,无需硬编码版本列名,适配列的动态变化:
get_version_value <- function(df, target_name) { target_row <- df[df$Name == target_name, ] version_col <- as.character(target_row$Current_Version) target_row[[version_col]] } # 测试:获取Name为"B"对应的值 get_version_value(df, "B") # 输出:30
这个函数会自动根据目标Name对应的Current_Version值,匹配对应的版本列,不管后续版本列新增或删除,只要Current_Version的数值和列名(字符串格式)一致,就能正常工作。
dplyr 实现
用管道和动态列选择实现需求,提供两种简洁写法:
写法1:rowwise + pick
library(dplyr) df %>% filter(Name == "B") %>% rowwise() %>% mutate(target_value = pick(as.character(Current_Version))) %>% pull(target_value)
写法2:管道内自引用
library(dplyr) df %>% filter(Name == "B") %>% { .[[as.character(.$Current_Version)]] }
两种写法都不需要固定版本列名,完全依赖Current_Version和列名的对应关系,适配动态变化的版本列。
内容的提问来源于stack exchange,提问作者Plot Device
相关产品推荐
相关产品推荐

