假设有一个方法(比如说“sample()”)并且它存在于多个包中(比如说在“base”和“arules”包中)。现在,如果我调用sample(),则将调用哪个程序包,它将程序包称为“基础”程序包还是“arules”程序包,它又如何决定调用哪个程序包?

最佳答案

它选择哪个首先出现在search路径上:

search()
 [1] ".GlobalEnv"        "package:arules"    "package:Matrix"
 [4] "package:stats"     "package:graphics"  "package:grDevices"
 [7] "package:utils"     "package:datasets"  "package:methods"
[10] "Autoloads"         "package:base"

因此它将是arules版本。这是一个S4方法,实际上无论如何都可以调用基本版本。请注意,base始终是搜索路径上的最后一个,而全局环境始终是第一个。通常,软件包被加载到第二位(可以使用poslibrary参数进行更改),并在加载其他软件包时向下移动。

关于r - R如何处理存在于多个包中的方法的冲突?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26232606/

10-12 17:34
查看更多