一些函数如browser
仅在交互使用时才有意义。
人们普遍认为subset
功能只能交互使用 https://stackoverflow.com/q/9860090/134830.
相似地,sapply
不适合编程使用,因为它不能简化零长度输入的结果。
我正在尝试列出不适合编程使用的函数的详尽列表。
该计划是制作一个用于包检查的工具,以查看是否调用了这些函数中的任何一个并发出警告。
还有其他功能,例如file.choose
and readline
需要交互性,但可以将它们包含在包中,因为最终使用将是交互的。对于这个用例,我不太关心这些,但请随意将它们添加到列表中。
我错过了哪些功能?
(随意编辑。)
应谨慎处理以下功能(这并不一定意味着它们不适用)suitable用于编程):
根据输入,其输出不具有一致的输出类的函数:sapply
, mapply
(默认情况下)
内部行为根据输入长度而不同的函数:sample
, seq
在环境中评估某些参数的函数:$
, subset
, with
, within
, transform
.
不符合正常环境使用的功能:attach
, detach
, assign
, <<-
允许部分匹配的函数:$
仅在交互式使用中有意义的功能:browser
, recover
, debug
, debugonce
, edit
, fix
, menu
, select.list
如果与用户输入一起使用,则可能成为威胁(病毒)的功能:source
, eval(parse(text=...))
, system
.
此外,在某种程度上,每个函数都会生成警告而不是错误。我建议使用options(warn = 2)
将编程应用程序中的所有警告转化为错误。然后可以通过以下方式允许特定情况suppressWarnings
or try
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)