24223 Running Map reduces the dimensions of the matrices

Say I have three lists:

l_zero [] [,1] [,2] [1,] 0 0 [2,] 0 0 [] [,1] [,2] [1,] 0 0 [2,] 0 0 l_ind <- list(matrix(c(1,1), ncol = 2), matrix(c(1,1,1,2), ncol = 2)) l_ind [] [,1] [,2] [1,] 1 1 [] [,1] [,2] [1,] 1 1 [2,] 1 2 l_val <- list(5, c(4, 7)) l_val []  5 []  4 7

I would like to run Map over the three lists with the goal of replacing in l_zero the zeros with the coordinates in l_ind with the values from l_val. My attempt gives me the following:

Map(function(l_zero, l_ind, l_val) l_zero[l_ind] <- l_val, l_zero = l_zero, l_ind = l_ind, l_val = l_val) []  5 []  4 7

As you can see, the original dimensions of the matrices are reduced, but I would like to keep the dimensions of the matrices and just replace the values with the coordinates in l_ind. I tried l_zero[l_ind, drop = FALSE], but that didn't help either.

Can someone help me with this?

Here's a bit simpler method, The [<- replacement function can be used in Map()'s function argument. It takes three arguments, in order.

Map("[<-", l_zero, l_ind, l_val) # [] # [,1] [,2] # [1,] 5 0 # [2,] 0 0 # # [] # [,1] [,2] # [1,] 4 7 # [2,] 0 0