Я пытаюсь вычислить функцию, аргументы которой являются именами столбца во фрейме данных. Мне нужно перебрать каждую строку и вычислить функцию. Кажется, что pmap - изящный способ сделать это, но я вынужден указать нотацию ..1, ..2, чтобы указать позиции столбцов во фрейме данных. Я думаю, что это не очень воспроизводимый способ выполнения этого.
Хотя он просто знает имена столбцов, когда я использую анонимную функцию вместо именованной.
library(purrr)
#> Warning: package 'purrr' was built under R version 3.6.3
toy_df <- data.frame(a = 1:10, b = 2:11, c = 3:12)
toy_function <- function(a, b, c) {
data.frame(result = a^2 + b^3 + log(a)*c + sin(a)*b)
}
## this fails
toy_fail <- purrr::pmap(toy_df, ~ toy_function())
#> Error in data.frame(result = a^2 + b^3 + log(a) * c + sin(a) * b): argument "a" is missing, with no default
## this works
toy_pass <- purrr::pmap(toy_df, ~ toy_function(..1, ..2, ..3))
## this works and I didn't need to specify the positions
toy_also_pass <- purrr::pmap(toy_df, function(a, b, c){
data.frame(result = a^2 + b^3 + log(a)*c + sin(a)*b)
})
Создано 28 июля 2020 г. пакетом REPEX (v0.3.0)