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

在R的tidyverse框架下如何用字符串变量名向量调用pmax/pmin

错误原因

pmax函数要求将参与计算的每一列作为独立参数传入,你直接向pmax传递all_of(values)时,相当于传入了一个长度为2的列名字符向量,而非将选中列的数值分别作为参数输入,因此会触发长度不匹配的报错。

解决方案

下面提供三种不同场景下的可行写法,最终效果和手动传入列名的计算结果完全一致:

  • 通用兼容写法(适配所有tidyverse版本):使用do.call拼接参数
library(tidyverse)
data(mtcars)
values <- c("drat", "wt")

mtcars %>% 
  mutate(maxval = do.call(pmax, c(select(., all_of(values)), na.rm = TRUE)))
  • 高可读性写法(dplyr >= 1.0.0):搭配rowwise和c_across逐行计算
mtcars %>% 
  rowwise() %>% 
  mutate(maxval = pmax(c_across(all_of(values)), na.rm = TRUE)) %>% 
  ungroup() # 计算完成后取消行分组,避免影响后续数据操作
  • 高效简洁写法(dplyr >= 1.1.0):使用pick和!!!拼接参数
mtcars %>% 
  mutate(maxval = pmax(!!!pick(all_of(values)), na.rm = TRUE))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 05:54:01