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

如何使用FertBoot::f.linear.plateau处理嵌套数据获取线性平台函数系数?

问题:FertBoot分组嵌套调用f.linear.plateau函数报错

我使用FertBoot包的f.quad、f.quad.plateau和f.linear.plateau函数,为不同数据集计算二次函数、二次平台函数及线性平台函数的系数。直接对整个数据集调用f.linear.plateau可正常运行,但按group字段分组嵌套数据后调用该函数出现错误,且该错误未在f.quad和f.quad.plateau函数中出现。

错误信息

Error in `mutate()`:
ℹ In argument: `LP = map(data, ~f.linear.plateau(d = .))`.  
ℹ In group 1: `group = "a"`.  
Caused by error in `map()`:  
ℹ In index: 1.  
Caused by error in `model.frame.default()`:  
! invalid type (list) for variable 'd[, 2]'  
Backtrace:
  1. df %>% group_by(group) %>% nest() %>% ...
  9. purrr::map(data, ~f.linear.plateau(d = .))
 10. purrr:::map_("list", .x, .f, ..., .progress = .progress)
 14. .f(.x[[i]], ...)
 15. FertBoot::f.linear.plateau(d = .)
 20. stats::model.frame.default(formula = d[, 2] ~ d[, 1], drop.unused.levels = TRUE)

复现代码

library(tidyverse)
library(FertBoot)

df <- data.frame(
  x = 0:200
  ) %>%
  mutate(
    a = -0.003*x^2+x+30,
    b = -0.0029*x^2+x+25,
    c = -0.004*x^2+1.2*x+20
    ) %>%
  gather(
    a,b,c, 
    key=group, 
    value = y
  ) #%>%
  #dplyr:: select(-group)

 #result <- f.linear.plateau(df)


result <- df %>%
  group_by(group) %>%
  nest() %>%
   mutate(
     Q = map(
       data, 
       ~f.quad(d=.)
       ),
     QP = map(
       data, 
       ~f.quad.plateau(d=.)
       ),
     LP =  map(
       data, 
       ~f.linear.plateau(d=.)
     )
   )

解决方案

问题根源

f.linear.plateau函数内部通过d[,2] ~ d[,1]的方式构建模型公式,但嵌套后的data子对象是包含x和y的数据框,函数无法正确识别数据框的索引操作;而f.quad和f.quad.plateau内部可能做了数据框到矩阵的自动转换,因此未出现报错。

修复代码

调用f.linear.plateau时,将嵌套的子数据框转换为矩阵(FertBoot函数通常接受矩阵输入,第一列为自变量,第二列为因变量):

result <- df %>%
  group_by(group) %>%
  nest() %>%
  mutate(
    Q = map(data, ~f.quad(d=.)),
    QP = map(data, ~f.quad.plateau(d=.)),
    LP = map(data, ~f.linear.plateau(d = as.matrix(.x)))
  )

也可以明确指定列来确保输入格式正确:

LP = map(data, ~f.linear.plateau(d = select(.x, x, y)))

两种方式都能解决索引识别错误的问题,让函数正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 01:27:07