Ответ @jverzani о том, какие объекты являются фреймами данных, хорош. Итак, начнем с этого. Но мы хотим выбрать только те элементы, которые являются фреймами данных. Таким образом, мы могли бы сделать это следующим образом:
#test data
df <- data.frame(a=1:10, b=11:20)
df2 <- data.frame(a=2:4, b=4:6)
notDf <- 1
dfs <- ls()[sapply(mget(ls(), .GlobalEnv), is.data.frame)]
имена фреймов данных теперь являются строками в объекте dfs, поэтому вы можете передавать их другим функциям, например так:
sapply( dfs, function(x) str( get( x ) ) )
Я использовал команду get()
, чтобы фактически получить объект по имени (подробнее об этом см. R FAQ )
Я отвечал на ваши вопросы выше, но у меня есть подозрение, что если бы вы организовали ваши фреймы данных в элементы списка, ваш код был бы НАМНОГО более читабельным и простым в обслуживании. Очевидно, что я не могу сказать это с уверенностью, но я не могу придумать случай использования, в котором перебор всех объектов в поисках фреймов данных лучше, чем сохранение ваших фреймов данных в списке, а затем вызов каждого элемента в этом списке.