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

在R中创建可应用于多个数据框每行的自定义函数

解决方法

你原来的函数写法存在语法错误,函数需要先声明参数,再在函数体内实现逻辑。以下是针对需求的正确实现方案:

1. 定义通用行求和函数

直接定义接收数据框为参数的函数,利用rowSums高效计算指定列的行求和(rowSums本身就是按行计算的向量化函数,无需额外用apply,对大型数据框的处理效率更高):

apf <- function(df) {
  # 选取第1、3、4、7列,计算每行的和
  rowSums(df[, c(1, 3, 4, 7)])
}

2. 给单个数据框添加新列

直接调用函数即可,不需要使用apply:

# 给dfn数据框添加new_c列,值为指定列的行和
dfn$new_c <- apf(dfn)

3. (可选)如果一定要用apply实现(不推荐,效率较低)

如果坚持要用apply按行处理,需要调整函数以接收单行向量作为参数:

# 接收单行向量的求和函数
apf_row <- function(row_vec) {
  sum(row_vec[c(1, 3, 4, 7)])
}

# 用apply按行计算并添加新列
dfn$new_c <- apply(dfn, 1, apf_row)

4. 批量处理多个数据框

如果有多个数据框需要处理,建议将它们存入列表,用lapply批量操作:

# 假设你有df1、df2、df3三个数据框,先整理进列表
df_list <- list(df1 = df1, df2 = df2, df3 = df3)

# 批量给每个数据框添加new_c列
updated_df_list <- lapply(df_list, function(df) {
  df$new_c <- apf(df)
  df
})

# 可选:将处理后的数据框放回全局环境
list2env(updated_df_list, envir = .GlobalEnv)

内容的提问来源于stack exchange,提问作者Annah.Grace

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 05:45:08