[Rd] quantile() names

Merkle, Edgar C. merk|ee @end|ng |rom m|@@our|@edu
Tue Dec 15 17:36:20 CET 2020


Avi,

On Mon, 2020-12-14 at 18:00 -0500, Avi Gross wrote:

Question: is the part that Ed Merkle is asking about the change in the

expected NAME associated with the output?

You are right: the question is about the name changing to "98%", when the returned object is the 97.5th percentile.

It is indeed easy to set names=FALSE here. But there can still be a problem when the user sets options(digits=2), then a package calls quantile(x, .975) and expects an object that has a name of "97.5%".

I think the easiest solution is to tell the user not to set options(digits=2), but it also seems like the "98%" name is not the best result. But Gabriel is correct that we would still need to consider how to handle something like quantile(x, 1/3). Maybe it is not a big enough issue to warrant changing anything.

Ed




He changed a sort of global parameter affecting how many digits he wants any

compliant function to display. So when he asked for a named vector, the

chosen name was based on his request and limited when possible to two

digits.


x <- 1:1000

temp <- quantile(x, .975)


If you examine temp, you will see it is a vector containing (as it happens)

a single numeric item (as it happens a double) with the value of 975. But

the name associated is a character string with a "%" appended as shown

below:


str(temp)

        Named num 975

        - attr(*, "names")= chr "98%"


If you do not want a name attached to the vector, add an option:


quantile(x, .975, names=FALSE)


If you want the name to be longer or different, you can do that after.


names(temp)

        [1] "98%"


So change it yourself:


temp

        98%

        975

 names(temp) <- paste(round(temp, 3), "%", sep="")

temp

        975.025%

        975


The above is for illustration with tabs inserted to show what is in the

output. You probably do not need a name for your purposes and if you ask for

multiple quantiles you might need to adjust the above.


Of course if you wanted another non-default "type" of calculation, what Abby

offered may also apply.


-----Original Message-----

From: R-devel <r-devel-bounces using r-project.org<mailto:r-devel-bounces using r-project.org>> On Behalf Of Abby Spurdle

Sent: Monday, December 14, 2020 4:48 PM

To: Merkle, Edgar C. <merklee using missouri.edu<mailto:merklee using missouri.edu>>

Cc: r-devel using r-project.org<mailto:r-devel using r-project.org>

Subject: Re: [Rd] quantile() names


The "value" is *not* 975.

It's 975.025.


The results that you're observing, are merely the byproduct of formatting.


Maybe, you should try:


    quantile (x, .975, type=4)


Which perhaps, using default options, produces the result you're expecting?



On Tue, Dec 15, 2020 at 8:55 AM Merkle, Edgar C. <merklee using missouri.edu<mailto:merklee using missouri.edu>>

wrote:


All,


Consider the code below


options(digits=2)

x <- 1:1000

quantile(x, .975)


The value returned is 975 (the 97.5th percentile), but the name has been

shortened to "98%" due to the digits option. Is this intended? I would have

expected the name to also be "97.5%" here. Alternatively, the returned value

might be 980 in order to match the name of "98%".


Best,

Ed



        [[alternative HTML version deleted]]


______________________________________________

R-devel using r-project.org<mailto:R-devel using r-project.org> mailing list

https://stat.ethz.ch/mailman/listinfo/r-devel


______________________________________________

R-devel using r-project.org<mailto:R-devel using r-project.org> mailing list

https://stat.ethz.ch/mailman/listinfo/r-devel



Scanned by McAfee and confirmed virus-free.

Find out more here: https://bit.ly/2zCJMrO




	[[alternative HTML version deleted]]



More information about the R-devel mailing list