为什么R函数mean()和sum()对向量和原始字符串的行为不同?



我想知道是否有一个底层编程逻辑关于为什么一些基本的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,因此,我相信,该函数将尝试计算作为未命名参数输入的所有值的总和。

meansum是泛型函数,因此它们会根据对象的类被不同地部署。

相关内容

  • 没有找到相关文章