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

标签 r dataframe dplyr

我有一个数据框 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 的错误周围遇到错误。

最佳答案

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

关于r - 将自定义函数应用于 R 中数据框中每一行的两列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34682109/

相关文章:

r - 自动堆叠数据框的每第 n 列

r - 将因子转换为数字背后发生了什么?

r - 查找包含缺失值的列的名称

r - 使用列表中的两个按行参数分割/过滤数据框

r - 将 mutate_at() 与否定选择助手一起使用,例如(不是 one_of())

r - 如何根据数据框中的分组来增加数字距离?

根据子图中的点重新排列facet_wrap图

r - ggplot中代码布局的外化

r - 在 R 中的两个数据帧之间更改值

python - 尝试更改 pandas 数据帧中的索引值时出错(IndexError : too many indices for array)