
178
|
第
6
章
6.2 将函数应用于数据框的每一行
6.2.1 问题
你有一个函数,并且你需要将其应用于数据框的每一行。
6.2.2 解决方案
mutate 函数将基于一个向量创建一个新变量。但是如果我们使用的函数不能接受向量
并输出向量,那么我们必须使用 rowwise 函数进行逐行操作。
我们可以在管道(pipe)链中使用 rowwise 函数 , 来告诉 dplyr 逐行执行以下所有命令:
df %>%
rowwise() %>%
row_by_row_function()
6.2.3 讨论
让我们创建一个函数 , 并将其应用于数据框的每一行。对于从数 a 到数 b、每 2 个数值
间隔为 c 的等差序列,我们的函数将计算该序列的和:
fun <- function(a, b, c) {
sum(seq(a, b, c))
}
让我们生成一些数据来应用这个函数,然后使用 rowwise 函数将我们的函数 fun 应用
于它:
df <- data.frame(mn = c(1, 2, 3),
mx = c(8, 13, 18),
rng = c(1, 2, 3))
df %>%
rowwise %>%
mutate(output = fun(a = mn, b = mx, c = rng))
#> Source: local data frame [3 x 4]
#> Groups: <by row>
#>
#> # A tibble: 3 x 4
#> mn mx rng output
#> <dbl> <dbl> ...