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

如何在R的tidyverse中自动获取数值列并传入pmin等函数

在tidyverse中批量获取所有数值列的行最小值

当需要自动识别所有数值列并计算每行的最小值时,你之前的写法问题在于pick(where(is.numeric))返回的是一个数据框,而pmin需要接收多个独立的向量参数,而非单个数据框。下面提供两种可行的解决方法:

方法一:使用拼接运算符!!!拆分列参数

通过!!!将pick选中的列拆分为独立参数传递给pmin,即可正确计算每行最小值:

df <- data.frame(V1= runif(3, 1, 10), V2 = runif(3, 1, 10), V3 = runif(3, 1, 10))
df |> dplyr::mutate(min_val = pmin(!!!dplyr::pick(dplyr::where(is.numeric))))

运行后会新增min_val列,存储每行所有数值列的最小值。

方法二:使用c_across结合逐行处理

利用rowwise()将数据框转为逐行处理模式,通过c_across将每行的数值列组合成向量,再用min计算最小值:

df <- data.frame(V1= runif(3, 1, 10), V2 = runif(3, 1, 10), V3 = runif(3, 1, 10))
df |> 
  dplyr::rowwise() |> 
  dplyr::mutate(min_val = min(dplyr::c_across(dplyr::where(is.numeric)))) |> 
  dplyr::ungroup()

注意最后用ungroup()取消逐行模式,避免后续操作受影响。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 19:28:08