考虑到数据帧名称是字符串,检查数据帧是否存在的首选方法是什么?我能想到的:检查数据帧是否存在
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
考虑到数据帧名称是字符串,检查数据帧是否存在的首选方法是什么?我能想到的:检查数据帧是否存在
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
第二个选项可以缩短到
exists(df_name) && is.data.frame(get(df_name))
运营商&&
让懒惰的评价,即第二条语句只计算如果第一个返回TRUE
。
另外一个
ifelse(any(ls() %in% "a"), is.data.frame(get("a")),FALSE)
这似乎既是对'ifelse()'的不当使用,又无法将“搜索”扩展到可能不在全局环境中的可用系统数据集。 –
存在(“df_name”)会给出TRUE(如果数据框存在)和FALSE(如果不存在)。那为什么要麻烦?第一个响应中的trycatch语句不起作用。它的输出始终是FALSE。
也许你的回答只检查一个对象是否存在,而不是该对象是否作为数据框存在? –
另外,'tryCatch'语句为我返回了'TRUE'。 –
我会为第二个投票。但是如果你想把它包装在一个函数中,那么'iris'或'df_name'需要改变,所以使用相同的名字。 –