【问题标题】:R Code: using UDF with multiple arguments for apply functionR代码:使用带有多个参数的UDF用于应用函数
【发布时间】:2015-05-05 16:00:22
【问题描述】:

我的 UDF:

testfn = function(x1, x2, x3){
if(x1 > 0){y = x1 + x2 + x3}
if(x1 < 0){y = x1 - x2 - x3}
return(y)
}

我的样本测试集:

test = cbind(rep(1,3),c(2,4,6),c(1,2,3))

应用的运行:

apply(test, 1, testfn, x1 = test[1], x2 = test[2], x3 = test[3])

这是我得到的错误:

FUN(newX[, i], ...) 中的错误:未使用的参数 (newX[, i])

我应该如何使用 apply 以便我的 UDF 逐行评估测试集?

我期待:

[1] 4 7 10

我提供了一个简化的通用 UDF,因为我需要使用更复杂的 UDF。

【问题讨论】:

  • 为什么 6 作为第一个值?第一行的和是4。

标签: r user-defined-functions apply udf multiple-arguments


【解决方案1】:

你可以通过将函数直接传递给apply来完成同样的事情

apply(test, 1, function(x) if(x[1] > 0) sum(x) else x[1] - x[2] - x[3])

[1]  4  7 10

如果你想使用你的 UDF,你需要修改它。

testfn = function(mydf){
  if(mydf[1] > 0){y = mydf[1] + mydf[2] + mydf[3]}
  if(mydf[1] < 0){y = mydf[1] - mydf[2] - mydf[3]}
  return(y)
}

apply(test, 1, testfn)

【讨论】:

  • 有没有办法使用我的 UDF?因为我提供了一个简单的 UDF,因为我的 UDF 要复杂得多。
  • 更新了使用 UDF 的答案。
猜你喜欢
  • 2011-10-13
  • 2018-11-17
  • 2012-10-15
  • 2021-08-24
  • 1970-01-01
  • 1970-01-01
  • 2012-03-24
  • 1970-01-01
  • 2013-07-15
相关资源
最近更新 更多