将自定义函数应用于R中数据框中每一行的两列

ped*_*ram 4 r dataframe dplyr

我有一个DF看起来有点像这样的data.frame

category var1 var2 
apples    1    4
bananas   3    3
orange    4    1 
kiwis     2    3
Run Code Online (Sandbox Code Playgroud)

我还创建了一个简单的自定义函数,它根据两个参数生成输出:

annualize_fte <- function(tenure, amount)
{
    if (tenure==0) return(0)

    if (tenure>12) {
        result = amount
    } else {
        t_factor = 12 / tenure
        result = amount * t_factor
    }
    return(result)
}
Run Code Online (Sandbox Code Playgroud)

我想创建第三列var3,它是应用于annualize_fte(var1, var2)每一行的结果.

我尝试过以下操作并且失败了:

mutate(DF, var3=annualize_fte(var1, var2)) 
apply(DF, 1, annualize_fte, DF$var1, DF$var2)
Run Code Online (Sandbox Code Playgroud)

我在未使用的参数或条件长度> 1的错误周围出现错误.

Sam*_*son 7

也许你想尝试Vectorize()使它成为你的函数可以使用和返回向量:

annualize_fte_v <- Vectorize(annualize_fte)

(DF$var3 <- annualize_fte_v(DF$var1,DF$var2))
#   category var1 var2 var3
# 1   apples    1    4   48
# 2  bananas    3    3   12
# 3   orange    4    1    3
# 4    kiwis    2    3   18
Run Code Online (Sandbox Code Playgroud)