【问题标题】:Inconsistent behaviour of exists() function in RR中exists()函数的行为不一致
【发布时间】:2019-07-24 07:48:06
【问题描述】:

在两个不同的函数中,完全相同的exists()调用行为方式不同。一个有效,另一个无效。有效的只需要一个参数。另一个需要三个。

直到昨天,这两个功能都成功了。就在结束会议之前,我安装了一些包。而今天,当我再次使用这些函数运行代码时,其中一个正在工作,而另一个却没有。所以,我分离了大部分正在运行的包,以免责怪其中一个。但问题仍然存在。

工作一: fun1<-function(arg1,...) { if(!exists(as.character(substitute(arg1)))) return ("Some sttuf") }

不工作的一个: fun2<-function(arg1, arg2, arg3, ...) { if(!exists(as.character(substitute(arg1))) ) return ("Some sttuf") }

fun2 中存在多个参数的事实是否与这种不一致的行为有关?无法使用 args 构建列表或向量,因为不存在的对象会在构建列表之前生成错误。

任何想法为什么会发生这种情况?更重要的是:关于如何解决问题的任何想法?

【问题讨论】:

  • 也许使用missing 而不是exists?否则,您能否添加一个可以测试的功能的工作示例?

标签: r exists


【解决方案1】:

如果你只提供一个参数,需要三个参数的函数将无法工作,这是意料之中的。

解决此问题的一种方法是明确指定要使用的函数。

例如,如果你想使用来自 {elasticsearch} 而不是 {base} 的 exists(),你应该指定为

elasticsearch::exists()

【讨论】:

    猜你喜欢
    • 2023-03-11
    • 2021-01-27
    • 2018-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多