Dear list, I found an odd behavior of the mean function; it is allowed to do something that you probably shouldn't: If you calculate mean() of a sequence of numbers (without declaring them as vector), mean() then just computes mean() of the first element. Is there a reason why there is no warning, like in sd for example? Example code: mean(1,2,3,4) sd(1,2,3,4) Best regards Christian
Mean error message missing
5 messages · Achim Zeileis, Christian Brandstätter, Duncan Murdoch
On Mon, 8 Jun 2015, Christian Brandst?tter wrote:
Dear list, I found an odd behavior of the mean function; it is allowed to do something that you probably shouldn't: If you calculate mean() of a sequence of numbers (without declaring them as vector), mean() then just computes mean() of the first element. Is there a reason why there is no warning, like in sd for example?
mean() - unlike sd() - is a generic function that has a '...' argument that is passed on to its methods. The default method which is called in your example also has a '...' argument (because the generic has it) but doesn't use it.
Example code: mean(1,2,3,4) sd(1,2,3,4) Best regards Christian
______________________________________________ R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.
Thank you for the explanation. But if you take for instance plot.default(), being another generic function, it would not work like that: plot(1,2,3,4), only plot(1,2) is accepted. From R-help (Usage): ## Default S3 method: mean(x, trim = 0, na.rm = FALSE, ...) What is puzzling, is that apparently na.rm (and trim, which is indicated in the help) is accepting numeric values. mean(c(1,NA,10),10,TRUE) mean(c(1,NA,10),10,FALSE) This should give at least a warning in my opinion. mean(c(1,NA,10),10,200)
On 08/06/2015 09:27, Achim Zeileis wrote:
On Mon, 8 Jun 2015, Christian Brandst?tter wrote:
Dear list, I found an odd behavior of the mean function; it is allowed to do something that you probably shouldn't: If you calculate mean() of a sequence of numbers (without declaring them as vector), mean() then just computes mean() of the first element. Is there a reason why there is no warning, like in sd for example?
mean() - unlike sd() - is a generic function that has a '...' argument that is passed on to its methods. The default method which is called in your example also has a '...' argument (because the generic has it) but doesn't use it.
Example code: mean(1,2,3,4) sd(1,2,3,4) Best regards Christian
______________________________________________ R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.
On 08/06/2015 6:04 AM, Christian Brandst?tter wrote:
Thank you for the explanation. But if you take for instance plot.default(), being another generic function, it would not work like that: plot(1,2,3,4), only plot(1,2) is accepted. From R-help (Usage): ## Default S3 method: mean(x, trim = 0, na.rm = FALSE, ...) What is puzzling, is that apparently na.rm (and trim, which is indicated in the help) is accepting numeric values. mean(c(1,NA,10),10,TRUE) mean(c(1,NA,10),10,FALSE) This should give at least a warning in my opinion.
It is a common idiom in R programming to treat non-zero values as TRUE, and zero as FALSE. If every use of a number where a logical is needed generated a warning, you'd be swamped with them. Duncan Murdoch
mean(c(1,NA,10),10,200) On 08/06/2015 09:27, Achim Zeileis wrote:
On Mon, 8 Jun 2015, Christian Brandst?tter wrote:
Dear list, I found an odd behavior of the mean function; it is allowed to do something that you probably shouldn't: If you calculate mean() of a sequence of numbers (without declaring them as vector), mean() then just computes mean() of the first element. Is there a reason why there is no warning, like in sd for example?
mean() - unlike sd() - is a generic function that has a '...' argument that is passed on to its methods. The default method which is called in your example also has a '...' argument (because the generic has it) but doesn't use it.
Example code: mean(1,2,3,4) sd(1,2,3,4) Best regards Christian
______________________________________________ R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.
[[alternative HTML version deleted]]
______________________________________________ R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.
Thank you very much, I didn't know that.
On 08/06/2015 6:04 AM, Christian Brandst?tter wrote:
Thank you for the explanation. But if you take for instance plot.default(), being another generic function, it would not work like that: plot(1,2,3,4), only plot(1,2) is accepted. From R-help (Usage): ## Default S3 method: mean(x, trim = 0, na.rm = FALSE, ...) What is puzzling, is that apparently na.rm (and trim, which is indicated in the help) is accepting numeric values. mean(c(1,NA,10),10,TRUE) mean(c(1,NA,10),10,FALSE) This should give at least a warning in my opinion.
It is a common idiom in R programming to treat non-zero values as TRUE, and zero as FALSE. If every use of a number where a logical is needed generated a warning, you'd be swamped with them. Duncan Murdoch
mean(c(1,NA,10),10,200) On 08/06/2015 09:27, Achim Zeileis wrote:
On Mon, 8 Jun 2015, Christian Brandst?tter wrote:
Dear list, I found an odd behavior of the mean function; it is allowed to do something that you probably shouldn't: If you calculate mean() of a sequence of numbers (without declaring them as vector), mean() then just computes mean() of the first element. Is there a reason why there is no warning, like in sd for example?
mean() - unlike sd() - is a generic function that has a '...' argument that is passed on to its methods. The default method which is called in your example also has a '...' argument (because the generic has it) but doesn't use it.
Example code: mean(1,2,3,4) sd(1,2,3,4) Best regards Christian
______________________________________________ R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.
[[alternative HTML version deleted]]
______________________________________________ R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.