3
Gibt es eine "saubere" Möglichkeit, einer Liste von data.frames (a la full_join()
, aber für> 2 data.frames) beizutreten? Ich habe eine Liste von data.frames als Ergebnis eines Anrufs zu map()
. Ich habe Reduce()
verwendet, um so etwas wie vorher zu tun, aber möchte sie als Teil einer Pipeline zusammenführen - habe einfach keinen eleganten Weg gefunden, das zu tun. Toy Beispiel:Liste der data.frames aus map() aufrufen
library(tidyverse)
## Function to make a data.frame with an ID column and a random variable column with mean = df_mean
make.df <- function(df_mean){
data.frame(id = 1:50,
x = rnorm(n = 50, mean = df_mean))
}
## What I'd love:
my.dfs <- map(c(5, 10, 15), make.df) #%>%
# <<some magical function that will full_join() on a list of data frames?>>
## Gives me the result I want, but inelegant
my.dfs.joined <- full_join(my.dfs[[1]], my.dfs[[2]], by = 'id') %>%
full_join(my.dfs[[3]], by = 'id')
## Kind of what I want, but I want to merge, not bind
my.dfs.bound <- map(c(5, 10, 15), make.df) %>%
bind_cols()
'purrr erfolgen :: reduce' ist ein Wrapper für' Reduce' mit den Parametern umgekehrt, so dass es besser klingt. – alistaire
Fantastisch - Ich hatte von 'purrr :: reduce' nichts gewusst. Vielen Dank! –