一些函数,如 browser
,仅在交互使用时才有意义。
广泛认为 subset
函数应仅在交互式使用中使用.
类似地,sapply
不适合编程使用,因为它不会简化零长度输入的结果。
我正在尝试列出仅适用于交互式使用而不适合编程使用的函数。
计划是创建一个工具来检查软件包,以查看是否调用了这些函数,并发出警告。
还有其他一些函数,如 file.choose
和 readline
, 需要交互性,但对于包含在软件包中是可以接受的,因为最终使用将是交互式的。 对于这种情况,我并不太关心这些函数,但请随意将它们添加到列表中。
我漏掉了哪些函数?
attach
永远不应该被使用,尤其是在编程中。当然,还有View
、edit
等实用函数。我不确定我是否同意sapply
的使用。 - Rolandattach
。我对sapply
的看法是,它会因为零长度输入而导致太多的隐晦错误。例如,sapply(x, length)
返回一个整数向量,除非x
的长度为0
,否则你会得到一个列表。如果你知道输出的大小是恒定的,则使用vapply
,否则使用lapply
。 - Richie Cottonbrowser
的调用,如果你将其提交到存储库中,看起来很傻。 - Richie Cottonsubset
之类的函数时,问题在于它们使用非标准评估其参数。只有当那些使用非标准评估的参数被传递变量时,才存在潜在问题。如果那些受到非标准评估的参数是常量表达式,则仍然可以在函数中安全使用这些函数。例如,在函数中使用subset(data, id == 1)
不会有问题。 - G. Grothendieck