R - это функциональный язык, и поэтому передаются копии аргументов, а не указатели на них.Функции не должны вносить изменения в «оригиналы» аргументов.Поэтому не следует полагать, что изменения значений, к которым осуществляется доступ внутри функции, будут «видны» вне среды этой функции , если только не будет присвоено исходное имя (или альтернативное имя, например, как здесь):
> g2 <- lapply(g, function(i){ i$k <- NULL; i})
> g2
$b1
$b1[[1]]
a
1 1
2 2
3 3
$b2
$b2[[1]]
a
1 8
2 9
Также обратите внимание: необходимость возврата измененного элемента после обнуления значения "k".Казалось бы, прямее передавать фактические элементы, а не использовать индекс.Из правил <-
и <<-
разрешено неявное исключение из правила «не изменять аргументы».