R 代码:使用具有多个参数的 UDF 来应用函数
R Code: using UDF with multiple arguments for apply function
我的 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])
这是我得到的错误:
Error in FUN(newX[, i], ...) : unused argument (newX[, i])
我应该如何使用 apply 以便我的 UDF 逐行评估测试集?
我期待:
[1] 4 7 10
我提供了一个简化的通用 UDF,因为我需要使用更复杂的 UDF。
您可以通过将函数直接传递到 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:
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])
这是我得到的错误:
Error in FUN(newX[, i], ...) : unused argument (newX[, i])
我应该如何使用 apply 以便我的 UDF 逐行评估测试集?
我期待:
[1] 4 7 10
我提供了一个简化的通用 UDF,因为我需要使用更复杂的 UDF。
您可以通过将函数直接传递到 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)