我想知道是否有一个底层编程逻辑关于为什么一些基本的R函数对输入到它们的原始数据与向量的行为不同。
例如,如果我这样做
mean(1,2,3)
我没有得到正确的答案,也没有得到错误
但是如果我这样做
sum(1,2,3)
我确实得到了正确的答案,即使我假设正确的语法是sum(c(1,2,3))
如果我这样做
sd(1,2,3)
我得到一个错误Error in sd(1, 2, 3) : unused argument (3)
实际上,我正在教一门基本的R语言课程,我想向我的学生解释为什么事情是这样的;他们对我说"这就是R的工作方式,接受它吧;总是把东西写成向量,让事情变得简单。"
编辑:我保留了一些部分来强调。我的问题主要是关于软件设计的,而不是这些特定的功能是如何操作的,或者如何确定它们的确切操作。也就是说,不是"这些函数接受什么参数",而是"为什么R中的简单数学函数(在生物学家看来)被设计得不同"。
mean
的第二个参数是trim
, sum
没有列出这个参数。sum
的第一个参数是dots
,因此,我相信,该函数将尝试计算作为未命名参数输入的所有值的总和。
mean
和sum
是泛型函数,因此它们会根据对象的类被不同地部署。