[R] round() a data frame containing 'character' variables?
Liviu Andronic
landronimirc at gmail.com
Wed Aug 10 17:26:43 CEST 2011
Hello
On Wed, Aug 10, 2011 at 2:31 PM, Jean V Adams <jvadams at usgs.gov> wrote:
> The function format() might serve your needs.
>
This looks very promising, but yields some strange results. See below:
> x <- data.frame(a=rnorm(10), b=rnorm(10), c=rnorm(10), d=letters[1:10])
> x
a b c d
1 0.54114449 -0.11195580 1.526279364 a
2 3.27109063 0.50848249 -0.215760332 b
3 -0.27064475 -1.04749725 0.082319811 c
4 -0.06638611 -0.58600572 0.004148253 d
5 -0.06170739 -0.37885203 0.689125494 e
6 0.53211363 -0.09150913 -0.463972307 f
7 -0.43314431 -0.28981614 -0.973410994 g
8 0.52137857 -1.15077343 0.163120205 h
9 -1.39581552 1.27378389 0.136708313 i
10 0.06348058 -0.00369746 -0.570214119 j
> format(x, digits=2) ##it displays 3 or 4 digits, instead of the required 2
a b c d
1 0.541 -0.1120 1.5263 a
2 3.271 0.5085 -0.2158 b
3 -0.271 -1.0475 0.0823 c
4 -0.066 -0.5860 0.0041 d
5 -0.062 -0.3789 0.6891 e
6 0.532 -0.0915 -0.4640 f
7 -0.433 -0.2898 -0.9734 g
8 0.521 -1.1508 0.1631 h
9 -1.396 1.2738 0.1367 i
10 0.063 -0.0037 -0.5702 j
> format(x, digits=2, nsmall=1, scientific=7) ##no change when setting related arguments
a b c d
1 0.541 -0.1120 1.5263 a
2 3.271 0.5085 -0.2158 b
3 -0.271 -1.0475 0.0823 c
4 -0.066 -0.5860 0.0041 d
5 -0.062 -0.3789 0.6891 e
6 0.532 -0.0915 -0.4640 f
7 -0.433 -0.2898 -0.9734 g
8 0.521 -1.1508 0.1631 h
9 -1.396 1.2738 0.1367 i
10 0.063 -0.0037 -0.5702 j
> round(x[1:3], digits=2) ##works as expected
a b c
1 0.54 -0.11 1.53
2 3.27 0.51 -0.22
3 -0.27 -1.05 0.08
4 -0.07 -0.59 0.00
5 -0.06 -0.38 0.69
6 0.53 -0.09 -0.46
7 -0.43 -0.29 -0.97
8 0.52 -1.15 0.16
9 -1.40 1.27 0.14
10 0.06 0.00 -0.57
Any ideas why format() and round() give so different results? Can
format() be set to behave similarly to round? Regards
Liviu
More information about the R-help
mailing list