Я пытаюсь сократить следующий код с помощью функции, но я получаю несколько неожиданный результат. Если я использую этот код
A <- data.frame(x = c(1,2,3), y = c(4,5,6))
B <- data.frame(x = c(7,8), y = c(1,2))
Lst <- list(A, B)
names(Lst) <- c('A','B')
idx <- c('A', 'B')
Lst[['A']]['name'] <- 'A'
Lst[['B']]['name'] <- 'B'
, я получаю вывод
> Lst
$A
x y name
1 1 4 A
2 2 5 A
3 3 6 A
$B
x y name
1 7 1 B
2 8 2 B
, как и ожидалось. Вместо этого я хотел использовать функцию, чтобы сделать результат более общим, для других приложений, используя этот код:
bad.lst <- mapply(function(lst,x) {
lst[[x]]['name'] <- x
return(lst)
}, Lst, idx)
, и результат неожиданно
A B
x Numeric,3 Numeric,2
y Numeric,3 Numeric,2
A Character,3 Character,2
Is Есть ли способ исправить второй код, чтобы получить тот же результат, что и в первом коде?