Создать новую переменную с именами объектов списка в r - PullRequest
0 голосов
/ 08 апреля 2020

У меня есть именованный список фреймов данных. Мне нужно создать новую переменную для каждого фрейма данных с именем фрейма данных, чтобы я мог со временем связать их всех для создания статистики и графиков.

Я знаю, что lapply не передает имя объекта и что есть много постов с похожими проблемами, но я просто не могу адаптировать ни одно из решений, которые я видел, к моей конкретной проблеме.

Это то, что я впервые попробовал, но, очевидно, не работает, потому что names (x) не возвращает имя объекта.

TestList <- список (a = data.frame (Var1 = 1: 5, Var2 = 5: 1), b = data.frame ( Var1 = 6:10, Var2 = 10: 6)) </p>

lapply (TestList, функция (x, y = names (x)) {x $ Var3 <- y; return (x)}) </p>

Я также пытался использовать seq_along, но потом теряюсь, как создать новую переменную для каждого фрейма данных.

Передает ли lapply индекс? В таком случае я мог бы создать новый объект с

names (TestList)

и затем получить имя оттуда. Я также не смог найти, как это сделать.

Наконец, вот что мне нужно получить:

DesiredTestList <- list (a = data.frame (Var1 = 1) : 5, Var2 = 5: 1, Var3 = rep ("a", 5)), b = data.frame (Var1 = 6:10, Var2 = 10: 6, Var3 = rep ("b", 5)) ) </p>

Ответы [ 2 ]

0 голосов
/ 09 апреля 2020

Для окончательного фрейма данных, который мне нужен, я нашел гораздо более простое решение

bind_rows(TestList, .id = "Var3")
0 голосов
/ 09 апреля 2020

Я получил это работает. Я просто хотел, чтобы lapply передал имя объекта в функцию. Во всяком случае, вот как я получил это работает:

GotTheTestList <- lapply(seq_along(TestList), function(x){TestList[[x]]$Var3 <- names(TestList)[x]; return(TestList[[x]])})
...