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

R语言多向量逐元素取最大值及do.call调用pmax报错解决

R语言列表存储多向量逐元素取最大值报错解决

复现场景

需要对列表中存储的多个等长向量按位置逐元素取最大值,测试数据代码如下:

v1<-c(1,1,3,5,10)
v2<-c(10,2,1,1,5)
v3<-c(11,4,2,1,9)
list_of_vectors <- list(v1, v2, v3)

预期输出结果:

> c(11,4,3,5,10)
[1] 11  4  3  5 10

尝试使用pmax配合do.call实现时,编写的代码运行报错:

do.call(pmax, list_of_vectors, na.rm=TRUE)

报错原因

do.call的语法为do.call(what, args, quote = FALSE, envir = parent.frame()),只有第二个位置传入的列表内容会被拆分后作为参数传给what指定的函数。你写的na.rm=TRUE被放在了do.call的第三个参数位,会被识别为do.call自身的参数,而do.call没有na.rm这个参数,因此触发报错。

正确写法

将na.rm=TRUE合并到传给pmax的参数列表中即可,修正后代码:

do.call(pmax, c(list_of_vectors, na.rm = TRUE))

运行后直接得到预期结果:

[1] 11  4  3  5 10

其他可选实现方式

也可以用Reduce迭代调用pmax实现相同效果,适合习惯函数式编程写法的场景:

Reduce(function(a, b) pmax(a, b, na.rm = TRUE), list_of_vectors)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 02:36:52