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

时间:2016-01-08 16:51:07

标签: r dataframe dplyr

我有一个看起来有点像

的data.frame DF
category var1 var2 
apples    1    4
bananas   3    3
orange    4    1 
kiwis     2    3

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

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)
}

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

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

mutate(DF, var3=annualize_fte(var1, var2)) 
apply(DF, 1, annualize_fte, DF$var1, DF$var2)

我在未使用的参数或条件长度> 1的错误中得到错误。

1 个答案:

答案 0 :(得分:6)

也许您想尝试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