Проверьте, существует ли кадр данных

Каков предпочтительный способ проверить, что фрейм данных существует, если у вас есть имя фрейма данных как строка? Я могу думать:

df_name <- 'iris'

# Option 1
tryCatch(is.data.frame(get(df_name)), error=function(cond) FALSE)

# Option 2
if (exists(df_name)) is.data.frame(get(df_name)) else FALSE

Ответы

Ответ 1

Второй вариант можно сократить до

exists(df_name) && is.data.frame(get(df_name))

Оператор && допускает ленивую оценку, т.е. Второй оператор оценивается только в том случае, если первый возвращает TRUE.

Ответ 2

Еще один

ifelse(any(ls() %in% "a"), is.data.frame(get("a")),FALSE)

Ответ 3

существует ("df_name") даст TRUE (если существует фрейм данных) и FALSE (если это не так). Так зачем беспокоиться? Операция trycatch в первом ответе не работала. Его вывод был FALSE все время.