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

R语言自定义函数报错:unused argument (.) 求助排查

问题解决:unused argument (.) 错误
  • 直接原因:使用管道%>%时,管道会自动将左侧的train_data作为第一个参数传入addTicketColumns函数,但你又手动指定了df = train_data,导致函数收到两个参数(.和df),而你的函数仅定义了一个参数,因此触发报错。
  • 修正方式:二选一即可:
    1. 去掉管道,直接调用函数:addTicketColumns(df = train_data)
    2. 保留管道,移除手动传参:train_data %>% addTicketColumns()
函数逻辑的核心问题修正

你的两个自定义函数都存在语法和逻辑错误,就算解决了上述报错也无法正常工作,以下是修正方案:

1. addTicketColumns 函数修正

原函数的列创建方式完全错误,正确的tidyverse写法是用mutate创建空列:

addTicketColumns <- function(df){
  df %>%
    mutate(
      Ticket_Letters = NA_character_,  # 创建字符型空列
      Ticket_Numbers = NA_real_         # 创建数值型空列
    )
}

2. ticketSplit 函数修正

原函数存在未定义变量、循环逻辑混乱等问题,用tidyverse的字符串函数可以替代低效循环,实现Ticket拆分:

ticketSplit <- function(df) {
  df %>%
    # 拆分带空格的Ticket,无字母的自动填充NA
    separate(Ticket, into = c("Ticket_Letters", "Ticket_Numbers"), 
             sep = " ", fill = "left", remove = FALSE) %>%
    # 处理无字母的情况,将纯数字Ticket的字母列设为NA
    mutate(
      Ticket_Letters = if_else(Ticket_Numbers == Ticket, NA_character_, Ticket_Letters),
      Ticket_Numbers = as.double(Ticket_Numbers)
    )
}

最终调用方式

修正后直接用管道调用拆分函数即可(无需单独调用addTicketColumns,拆分函数已包含列创建逻辑):

train_data <- train_data %>% ticketSplit()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 13:17:13