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

R语言如何使用rowwise基于自定义函数创建列表列

错误原因

你的代码存在两处明显错误:

  • rowwise() 不需要传入数据集a作为参数,该函数直接作用于管道传入的上游数据,额外传入参数会触发参数匹配错误。
  • 你调用fun(a, b, c)时,第三个参数c在你的原始数据集a中不存在,如果你是笔误要传入固定值,直接替换成对应值即可;如果c是你需要用到的字段,需要先在数据集中补充该列。

正确实现代码

方法1:使用rowwise逐行运算

如果第三个参数z传入固定值,示例如下:

library(dplyr)

# 原有数据集和函数
a <- data.frame(a= c(1,2,3), b=c(2,3,4))
fun <- function(q,y,z) {
    r <- data.frame(a = c(q+y, q, q, y), b= c(q,q,q,z))
    r
}

# 逐行运算生成列表列
b <- a %>% 
  rowwise() %>% 
  mutate(list1 = list(fun(q = a, y = b, z = 1)))

如果第三个参数z需要使用数据集中的字段,先补充对应列再调用即可:

# 先补充c列
a$c <- c(3,4,5)

b <- a %>% 
  rowwise() %>% 
  mutate(list1 = list(fun(a, b, c)))

方法2:使用purrr::pmap实现

不需要显式声明逐行运算,代码更简洁:

library(dplyr)
library(purrr)

a$c <- c(3,4,5)
b <- a %>% 
  mutate(list1 = pmap(list(a, b, c), fun))

运行完成后,b$list1的每一个元素都是对应行代入函数生成的data.frame,你可以通过b$list1[[1]]查看第一行的运算结果验证正确性。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 10:18:01