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

在R中如何对单个DataFrame迭代应用函数,无需使用for循环?

解决方案

方案1:基于purrr::reduce实现(无显式for循环,匹配你的原始思路)

reduce的入参不需要手动构造列表,传入长度为n的数值向量即可触发对应次数的迭代,实现效果和你嵌套调用add_row完全一致:

library(purrr)
library(tibble)

# 自定义函数,n为重复添加次数,...用来传递add_row的其他参数
add_n_rows <- function(df, n, ...) {
  reduce(1:n, \(acc, _) add_row(acc, ...), .init = df)
}

# 调用示例:在df开头添加3行
df <- tibble(a = 1:2, b = 3:4)
res <- add_n_rows(df, n = 3, .before = 1)

说明:参数acc为每次迭代的累积结果,_是无需使用的迭代位占位符,迭代次数完全由n控制。

方案2:原生参数实现(效率更高,无需迭代)

tibble::add_row自带.rows参数可直接指定新增行数,不需要嵌套或迭代,写法更简洁:

add_n_rows <- function(df, n, ...) {
  add_row(df, ..., .rows = n)
}

# 调用效果和方案1完全一致
res <- add_n_rows(df, n = 3, .before = 1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 17:36:07