Hoje tive que fazer uma função assim
data1 %>%
summarise(
ab1 = fn(a1, b1),
ab2 = fn(a2, b2),
ab3 = fn(a3, b3)
)
# imagine if there are 100 of them
Se fn
fosse uma função de argumento único eu poderia ter feito
data1 %>%
summarise(across(starts_with("a", fn)))
Mas infelizmente, minha função precisa de duas colunas como entradas. Existe uma maneira de fazer isso de forma mais elegante?
Provavelmente você pode tentar
split.default
dividir as colunas em grupos por seus nomes, por exemplo,o que dá
exemplo de dados
Você pode usar
map2*
funções para passar dois conjuntos de colunas.Usar dados de @ThomasIsCoding, mas uma função diferente da que seu código utiliza
summarise
, significa que haverá uma única linha no final.Outra abordagem usando dados remodelados. Se você conseguir superar o obstáculo de remodelar para frente e para trás a partir de uma forma mais longa, o cálculo seria trivial.
Um benefício dessa abordagem é que ela é robusta à ordem das colunas, e você não precisa especificar os prefixos das colunas antecipadamente, desde que haja algum padrão regular que você possa especificar com regex.
Saída usando dados de @ThomasIsCoding: