LDBerriz,
Я считаю, что это можно делать то, что вы пытаетесь сделать, обернув через имена переменных и получать их от .GlobalEnv, который представляет рабочее пространство.
Однако, я полагаю, как и несколько других комментаторов есть, это гораздо проще хранить ваши таблицы в списке, и цикл по списку, чем к перебрать переменные в .GlobalEnv:
tbl.1 <- data.table("A" = runif(5), "B" = runif(5))
tbl.2 <- data.table("A" = runif(5), "B" = runif(5))
tbl.3 <- data.table("A" = runif(5), "B" = runif(5))
tblList <- list(tbl.1, tbl.2, tbl.3)
for (i in 1:3) {
tbl <- tblList[[i]]
# Do something with tbl.
}
Ради этого ответа я предполагаю, что таблицы на самом деле разные, или есть некоторые причины, по которым у вас есть, что они должны быть отдельными таблицами. Конечно, если в столбцах таблиц были все одинаковые данные/переменные, например, tbl.1, tbl.2 и tbl.3 в вашем примере, вы могли бы просто объединить их в одну таблицу и сделать материал для одна таблица:
masterTbl <- rbind(tbl.1,tbl.2,tbl.3)
можно даже добавить столбец к ним, так что вы можете определить, какая таблица первоначально они пришли, если вам необходимо:
tbl.1$from <- 1
tbl.2$from <- 2
tbl.3$from <- 3
masterTbl <- rbind(tbl.1,tbl.2,tbl.3)
Бест, Бен.
Пожалуйста, конкретны, как к тому, что вы хотите сделать, вместо 'Do something'.Кроме того, если вы можете использовать 'set.seed' и ожидаемый результат, ответы могут быть конкретными. – akrun
Как сказал rawr: не делайте этого. Скорее 'my_tbl = rbind (tbl.1, tbl.2, tbl.3, idcol = TRUE); my_tbl [, {... do stuff ...}, by = .id] ', предполагая, что операции над каждой таблицей в цикле независимы. – Frank
R не настроен для этого, R настроен для работы с кадрами данных в списках. Вот почему нет хорошего/легкого ответа на вопрос, который вы задаете. Почему вам нужны уникальные объекты? Я был бы удивлен, если бы это было так. –