Mam następujące dane:Jak połączyć wszystkie elementy listy z innej tabeli danych pod warunkiem
library(data.table)
dt1 <- data.table(var1 = c("wk1","wk1","wk2"),
var2 = c(1,2,3))
dt2 <- data.table(var3 = c("a","b","c"),
var2 = c(1,2,3))
lista <- list(dt1,dt2)
dt_main <- data.table(var1 = c("wk1","wk2"),
var4 = c(100,200))
Chcę merge
wszystkie elementy lista
które zawierają zmienną var1
z dt_main
data.table
, więc w koniec chciałbym lista
wyglądać tak:
dt1 <- data.table(var1 = c("wk1","wk1","wk2"),
var2 = c(1,2,3),
var4 = c(100,100,200))
dt2 <- data.table(var3 = c("a","b","c"),
var2 = c(1,2,3))
lista <- list(dt1,dt2)
próbowałem
mapply(function(X,Y){
if("var1"%in%names(X)){
X <- merge(X,Y,by="var1")
}
},X=lista,Y=dt_main)
ale to nie działa. Jakaś pomoc ?
trochę za późno, b ut Wyszedłem z nieco inną odmianą: 'lapply (lista, function (x) if ('var'% w% nazwach (x)) x [dt_main, on = 'var1', var4: = var4] else x) ' – Jaap
Kolejny fajny sposób na połączenie :). Chcesz opublikować jako odpowiedź @Jap? – LyzandeR
done :-) (i poprawiono typ w moim rozwiązaniu) – Jaap