【问题标题】:Apply method in R missing argument (missing argument error)在 R 中应用方法缺少参数(缺少参数错误)
【发布时间】:2021-07-24 01:56:03
【问题描述】:

我正在尝试在 R 中使用 apply 方法。但我不断收到错误消息:FUN(newX[, i], ...) 中的错误:“b”中缺少参数。

产生错误的代码:

my_data <- data.frame(x1 = 1:5, x2 = 2:6, x3 = 3)

myFunction <- function(a, b, c){
  return(a + b + c)
}

results = apply(my_data, 1, myFunction) #this line is producing the error massage

例如,如果我将“myFunction”更改为“sum”。那么就没有错误了。我怎样才能摆脱这个错误?

【问题讨论】:

    标签: r dataframe apply


    【解决方案1】:

    要么把函数改成

    myFunction <- function(x) sum(x)
    apply(my_data, 1, myFunction)
    #[1]  6  8 10 12 14
    

    此外,rowSums 的逐行求和运算效率更高

    rowSums(my_data)
    

    或在 OP 的原始函数中使用 lambda/匿名函数单独指定参数

    apply(my_data, 1, function(x) myFunction(x[1], x[2], x[3]))
    

    【讨论】:

      【解决方案2】:

      你可以使用mapply:

      with(my_data, mapply(myFunction, x1, x2, x3))
      

      【讨论】:

      • 你可以使用do.call(mapply, c(FUN = myFunction, unname(my_data)))
      【解决方案3】:

      另请注意,您的 data.frame 是 3 个向量的列表。您可以像添加标量一样添加向量。

      with(my_data, x1 + x2 + x3)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-01-02
        • 2020-11-13
        • 1970-01-01
        相关资源
        最近更新 更多