3

Given

qz <- quantile(c(1,2,3,4,5,6,7,8,9,10), c(0.0, 0.2, 0.4, 0.6, 0.8, 1.0))

I want to create a vector of labels from the quantiles. Currently, I do this

zlab <- c(paste(paste(sprintf(qz[[1]], fmt='$%.2f'), "-"), sprintf(qz[2],
fmt='$%.2f')), paste(paste(sprintf(qz[[2]], fmt='$%.2f'), "-"), sprintf(qz[3],
fmt='$%.2f')),paste(paste(sprintf(qz[[3]], fmt='$%.2f'), "-"), sprintf(qz[4],
fmt='$%.2f')), paste(paste(sprintf(qz[[4]], fmt='$%.2f'), "-"), sprintf(qz[5],
fmt='$%.2f')), paste(paste(sprintf(qz[[5]], fmt='$%.2f'), "-"), sprintf(qz[6],
fmt='$%.2f')))

and get

zlab
[1] "$1.00 - $2.80"  "$2.80 - $4.60"  "$4.60 - $6.40"  "$6.40 - $8.20"  "$8.20 - $10.00"

zlab is formatted exactly correctly and eventually winds up as labels on a plot. But generating zlab is really ugly. Can I do this in a more elegant manner?

4

1 に答える 1

10

head and tail give you the slices of the quantiles that you need to paste.

x <- sprintf("$%.2f", qz)
x
## [1] "$1.00"  "$2.80"  "$4.60"  "$6.40"  "$8.20"  "$10.00"

paste(head(x, -1), tail(x, -1), sep=' - ')
## [1] "$1.00 - $2.80"  "$2.80 - $4.60"  "$4.60 - $6.40"  "$6.40 - $8.20"  "$8.20 - $10.00"
于 2013-01-16T03:25:58.770 に答える