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

R中对列表元素两两配对应用对称二元运算符的通用实现方法

R语言列表元素对称二元运算无冗余实现方案

通用实现

使用R内置combn()函数生成所有不重复的两两组合,仅计算一次每对对称配对结果,无冗余计算,支持任意输入类型和自定义二元运算符:

# lst:输入列表
# f:自定义对称二元运算函数
# ...:透传给f的额外参数
# include_diag:是否包含元素与自身配对的结果(即m=n的情况)
pairwise_apply <- function(lst, f, ..., include_diag = FALSE) {
  if (include_diag) {
    diag_res <- lapply(lst, function(x) f(x, x, ...))
    pair_res <- combn(length(lst), 2, function(idx) f(lst[[idx[1]]], lst[[idx[2]]], ...), simplify = FALSE)
    return(c(diag_res, pair_res))
  }
  # 默认仅计算m<n的配对,返回列表格式结果
  combn(length(lst), 2, function(idx) f(lst[[idx[1]]], lst[[idx[2]]], ...), simplify = FALSE)
}

使用示例

加法测试场景

A <- list(1,2,3)
# 调用内置加法运算符
pairwise_apply(A, `+`)
# 返回结果:list(3,4,5),完全匹配预期

集合运算场景

# 构造输入数据
list_of_sets <- list(
  numeric(0),
  1,
  2,
  c(1,2),
  3,
  c(1,3),
  c(2,3),
  c(1,2,3)
)
set_3 <- c(1,2)

# 调用自定义集合运算函数
res <- pairwise_apply(list_of_sets, function(set_1, set_2) {
  setequal(intersect(set_1, set_2), set_3)
})
# res为长度28的列表,对应8个元素的所有两两配对计算结果,无冗余

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 20:39:01