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

如何在不使用rep()的情况下让map2()实现短向量循环复用?

解决map2()无法自动循环复用短向量的问题

问题重现

运行以下代码时出现错误:

xx <- 1:12
yy <- 1:3
map2(xx, yy, ~ .x / .y)

预期map2()会自动循环较短的yy向量以匹配xx的长度,得到如下输出:

1
1
1
4
2.5
2
7
4
3
10
5.5
4

但实际因向量长度不匹配报错。

解决方案

map2()的设计逻辑是要求两个输入向量长度完全一致,不会自动循环短向量。无需手动调用rep()的话,可以用以下两种方法:

方法1:使用purrr::vec_recycle()自动扩展短向量

vec_recycle()可以自动将短向量循环扩展到目标长度,配合map2()使用:

library(purrr)
xx <- 1:12
yy <- 1:3
map2(xx, vec_recycle(yy, length(xx)), ~ .x / .y)

方法2:改用基础R的mapply()

mapply()默认支持短向量的自动循环,效果和预期一致:

xx <- 1:12
yy <- 1:3
mapply(function(x, y) x/y, xx, yy)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 16:22:11