[R] cut - strange NA as output

Hermann Norpois hnorpois at gmail.com
Tue Oct 6 23:07:28 CEST 2015


Thanks this was very helpful.

@Olivier Crouzet: Yes, round (x) would do the job but it was a principal
confusion ...

2015-10-06 21:57 GMT+02:00 Marc Schwartz <marc_schwartz at me.com>:

>
> > On Oct 6, 2015, at 2:20 PM, Hermann Norpois <hnorpois at gmail.com> wrote:
> >
> > Hello,
> >
> > why do I get NA for the following:
> >
> > cut (x, seq (0, max(x), by=1), label=FALSE)
> > [1] 1322 1175 1155 1149 1295 1173 1289 1197   NA 1129
> >
> > dput (x)
> > c(1321.55376901374, 1174.35657200935, 1154.02042504008, 1148.60981925942,
> > 1294.6166388941, 1172.45806806869, 1288.31933914639, 1196.26080041462,
> > 1355.88836502166, 1128.09901883228)
> >
> > Thanks
> > Hermann
>
>
> > max(x)
> [1] 1355.888
>
> > range(seq(0, max(x), by = 1))
> [1]    0 1355
>
>
> max(x) is outside (above) the range of the integer sequence of break
> points for cut() that you specified above. Thus, when cut() gets to the 9th
> element in x, the value is undefined.
>
> > cut (x, seq(0, max(x) + 1, by = 1), label=FALSE)
>  [1] 1322 1175 1155 1149 1295 1173 1289 1197 1356 1129
>
> or
>
> > cut (x, seq(0, ceiling(max(x)), by = 1), label=FALSE)
>  [1] 1322 1175 1155 1149 1295 1173 1289 1197 1356 1129
>
>
> Both of the above approaches will increment the sequence 0:max(x) to 1356:
>
> > range(seq(0, max(x) + 1, by = 1))
> [1]    0 1356
>
> > range(seq(0, ceiling(max(x)), by = 1))
> [1]    0 1356
>
>
> Regards,
>
> Marc Schwartz
>
>

	[[alternative HTML version deleted]]



More information about the R-help mailing list