I have the following data:
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))
I want to merge all the lista elements that contain the var1 variable with dt_main data.table , so at the end I would like lista look like this:
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)
I tried
mapply(function(X,Y){ if("var1"%in%names(X)){ X <- merge(X,Y,by="var1") } },X=lista,Y=dt_main)
but that will not work. Any help?