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

R语言如何对指定向量列循环排除单列执行函数并将结果存入data frame新列

解决方案

你可以通过循环遍历指定列索引+do.call批量调用pmax实现需求,完整可运行实现如下:

var.min <- function(data, col.names){
  new.df <- data
  # 初始化存储新列名的向量
  new.columns <- c()
  # 遍历每一个需要排除的指定列
  for (i in seq_along(col.names)) {
    # 本次计算保留的列(排除第i个指定列)
    cols_keep <- col.names[-i]
    # 批量调用pmax计算保留列的行最大值
    col_val <- do.call(pmax, new.df[, cols_keep])
    # 生成符合规则的新列名
    col_name <- paste0("max.def.col.exc.", i)
    # 新列写入数据框
    new.df[[col_name]] <- col_val
    # 记录新列名
    new.columns <- c(new.columns, col_name)
  }
  # 同时返回新数据框和新列名向量,方便后续调用
  return(list(
    df = new.df,
    new_col_names = new.columns
  ))
}

调用示例

# 测试数据
Name <- c("Case 1", "Case 2", "Case 3", "Case 4", "Case 5")
C1 <- c(1, 0, 1, 1, 0)
C2 <- c(0, 1, 1, 1, 0)
C3 <- c(0, 1, 0, 0, 0)
C4 <- c(1, 1, 0, 1, 0)
Data <- data.frame(Name, C1, C2, C3, C4)

# 调用函数
res <- var.min(Data, col.names = c("C1", "C2", "C3"))

# 提取结果数据框
new.df <- res$df
# 提取独立存储的新列名向量
new.columns <- res$new_col_names

运行后得到的new.df和你给出的预期输出完全一致,且new.columns会自动存储所有生成的新列名称,不需要手动硬编码。该实现支持任意长度的col.names输入(长度≥2即可),不需要随列数变化修改逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 10:54:03