Что ж, если вы вызовете ls()
без параметра env
, в нем будут перечислены только имена в текущей среде. Ваши попытки не передают этот параметр. Другой вариант - использовать eapply
, который предназначен для запуска функции над объектами в среде. Например
names(Filter(function(x) x, eapply(env, is.data.frame)))
Это работает, потому что eapply
возвращает именованный список. Мы можем просто отфильтровать значения TRUE из is.data.frame
и получить эти имена.
Проблема с mget(ls(), env)
состоит в том, что ls()
собирается вернуть "env"
, а затем mget()
будет искать переменную с именем env
в вашей среде env
, которая не существует. Вам понадобится
mget(ls(envir=env), env)
И тогда вам нужно будет сделать то же самое для списка элементов, которые вы поднастраиваете
dfs <- ls(envir=env)[sapply(mget(ls(envir=env), env), is.data.frame)]