Ich habe zwei Listen, die beide ähnliche Datensätze enthalten, die verschiedenen Jahren entsprechen. Ich möchte die Datensätze in beiden Listen Element für Element zusammenführen. Wenn ich mapply
neben dplyr::full_join
in dem Fall verwende, in dem die Variablennamen nicht übereinstimmen und ich das Argument by
verwenden muss, kann R den Join nicht ausführen. JedochMap() und dplyr Joins
library(dplyr)
set.seed(100)
first_list <- list(data.frame(x = 1:3, y = rnorm(3)),
data.frame(x = 4:6, y = rnorm(3)))
second_list <- list(data.frame(z = 1:3, w = rnorm(3)),
data.frame(z = 4:6, w = rnorm(3)))
Map(full_join, by = c("x" = "z"), first_list, second_list)
#Error: 'z' column not found in rhs, cannot join
,
Map(function(x, y) full_join(x, y, by = c("x" = "z")), first_list, second_list)
Arbeiten erfolgreich. Ich bin neugierig auf dieses Verhalten und frage mich, ob jemand eine Erklärung liefern könnte.
Die dplyr Familie von Paketen schreibt map, mapply, et al (wie map, map2 und andere, glaube ich). Wenn Sie diese wirklich verwenden möchten, sollten Sie sich die für Listen definierte "Grammatik" hadley näher ansehen: https://github.com/tidyverse/purrr – Frank