检查列表中的对象是不是存在,如果在 R 中不存在则将其删除
Posted
技术标签:
【中文标题】检查列表中的对象是不是存在,如果在 R 中不存在则将其删除【英文标题】:Checking if an object in a list exists and then removing it if it does not in R检查列表中的对象是否存在,如果在 R 中不存在则将其删除 【发布时间】:2020-11-04 04:04:40 【问题描述】:我有一个创建对象列表(data.frame)的脚本。然后将这些对象绑定到单个 .csv 文件中。问题是,由于空白元素,其中一个脚本会时不时地出现空白。反过来,其中一个对象将不存在。
我试过了
exist
但这并没有奏效。我尝试添加以下行但无法使其正常工作
object <- ifelse(exists(object)==True, object, c(NA,NA))
我所拥有的最终目标是
dataset <- do.call("rbind", list(object, object2, object3, object4))
问题是,如果其中一个对象不存在,此代码将不起作用。
【问题讨论】:
【参考方案1】:您可以使用ls
并搜索具有模式的对象。它只会返回那些我们可以rbind
存在的对象。
dataset <- do.call(rbind, mget(ls(pattern = 'object')))
【讨论】:
感谢您的回复。我想我应该指定我的对象是 data.frames。 如果对象是数据框,我认为不会有任何变化。这应该适用于全局环境中存在的任何对象。你试过答案吗?你有什么错误吗? 我得到了一个空返回。这些脚本从 RSS 提要中提取链接并返回一个包含 2 列的数据框(一列带有链接,一列带有 RSS 名称)。最终结果是创建一个列表。但是,当有一个没有新闻的提要时,就会有一个未定义的对象。然后我无法将数据框绑定在一起。 好的..但是如果您的对象是在全局环境中创建的,这应该可以工作。你能展示你正在使用的脚本吗(如果不是太长的话)?以上是关于检查列表中的对象是不是存在,如果在 R 中不存在则将其删除的主要内容,如果未能解决你的问题,请参考以下文章
R - 检查 r 数据框行的任何列中是不是存在 NA,如果存在,则删除该行 [重复]
在类的实例化期间如何检查该类的对象是不是已经存在,如果存在,则指向已经存在的对象? [复制]