如何将 UDF 的输入参数传递给 sapply

Posted

技术标签:

【中文标题】如何将 UDF 的输入参数传递给 sapply【英文标题】:How to pass an input parameter for a UDF to sapply 【发布时间】:2019-02-04 10:31:25 【问题描述】:

我有一个值向量和一个带有多个参数的用户定义函数。我想将我的 UDF 应用到这个向量中的每个值,而这个向量中的每个条目也是 UDF 的输入参数

t <- 1:5
myfunc <- function (setvar, var)
    return(setvar * var)


sapply(t, myfunc(setvar = 2), var = t)

所以在这种情况下,我想要的结果是:

2 4 6 8 10

【问题讨论】:

【参考方案1】:

你可以的

sapply(t, myfunc, setvar = 2)
#[1]  2  4  6  8 10

或者要了解您传递的具体内容,请使用匿名函数

sapply(t, function(x) myfunc(2, x))

另外,t 是 R 中的一个基本函数,因此最好为变量使用其他名称。

【讨论】:

非常感谢。这非常有效。来自 perl 背景,其中所有事情都由循环 R 完成,有时我仍然感到困惑。

以上是关于如何将 UDF 的输入参数传递给 sapply的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Set/HashSet 作为参数传递给 Spark 中的 UDF?

将 UDF 方法作为参数传递给 KSQL 中的其他 UDF

如何在不指定每一列的情况下将整行作为参数传递给 Spark(Java)中的 UDF?

如何将复杂的 Java 类对象作为参数传递给 Spark 中的 Scala UDF?

如何将一些额外的字符串参数传递给每行的 spark udf?

Pyspark 将函数作为参数传递给 UDF