R:使用 dplyr::mutate/dplyr::transmute 和一个作用于整行的函数



我有一个数据框。为了论证起见,假设它是datasets::women数据框。我想通过对每一行应用一个函数来从帧创建一个向量。

似乎通常的方法是使用 dplyr 并调用 mutatetransmute ,例如:

dplyr::transmute(women, some_index = 2 * height + weight)

太好了:那行得通。但是,如果我将some_index的计算提取到一个作用于行的函数中呢:

calc_some_index <- function(woman) {
    2 * woman$height + woman$weight
}

有没有办法调用mutate/transmute,以便它在其输入的每一行上调用此函数?

当然,如果我打电话,我可以看到我得到了正确的结果

dplyr::transmute(women, some_index=calc_some_index(women))

但我相信这只是通过将预先计算的计算向量代入transmute调用来"作弊"。例如,如果我调用:

dplyr::transmute(head(women, n=10), some_index=calc_some_index(women))

我认为您正在招致尺寸错误。

如果我这样做

library(dplyr)
transmute(head(women, n=10),
          some_index=calc_some_index(head(women,10)))

然后它工作(代码中的错误抱怨大小不同)

或者,您可以使用管道,它可以工作:

head(women, 10) %>%
   transmute(calc_some_index(.))

最新更新