[Rd] quantile() names

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


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.


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


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



        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.


        [1] "98%"

So change it yourself:




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




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>>



Consider the code below


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%".



        [[alternative HTML version deleted]]


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



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


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