You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jira@arrow.apache.org by "Ian Cook (Jira)" <ji...@apache.org> on 2021/09/24 18:02:00 UTC

[jira] [Commented] (ARROW-14125) [R] Why does round with arithmetic error?

    [ https://issues.apache.org/jira/browse/ARROW-14125?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17419910#comment-17419910 ] 

Ian Cook commented on ARROW-14125:
----------------------------------

I'm not able to repro this with a current development build; perhaps it's limited to the fork you're working in? Regardless, let's use this Jira to add an example like this to the {{round()}} tests in {{test-dplyr.R}}.

> [R] Why does round with arithmetic error?
> -----------------------------------------
>
>                 Key: ARROW-14125
>                 URL: https://issues.apache.org/jira/browse/ARROW-14125
>             Project: Apache Arrow
>          Issue Type: Bug
>            Reporter: Jonathan Keane
>            Priority: Major
>
> Trying to call {{round}} with an arithmetic expression errors / pulls data into R:  
> {code}
> > library(arrow)
> > library(dplyr)
> > 
> > df <- tibble(x = c(-1, -0.55, -0.5, -0.1, 0, 0.1, 0.5, 0.55, 1, NA, NaN))
> > 
> > # Round with arith inside pulls into R
> > Table$create(df) %>% 
> +   mutate(
> +      r = round(x + 1)
> +    ) %>%
> +    collect()
> Warning: Expression round(x + 1) not supported in Arrow; pulling data into R
> # A tibble: 11 × 2
>         x     r
>     <dbl> <dbl>
>  1  -1        0
>  2  -0.55     0
>  3  -0.5      0
>  4  -0.1      1
>  5   0        1
>  6   0.1      1
>  7   0.5      2
>  8   0.55     2
>  9   1        2
> 10  NA       NA
> 11 NaN      NaN
> > 
> > Table$create(df) %>% 
> +   mutate(
> +     r = round(0.00001 + 1)
> +   ) %>%
> +   collect()
> Warning: Expression round(1e-05 + 1) not supported in Arrow; pulling data into R
> # A tibble: 11 × 2
>         x     r
>     <dbl> <dbl>
>  1  -1        1
>  2  -0.55     1
>  3  -0.5      1
>  4  -0.1      1
>  5   0        1
>  6   0.1      1
>  7   0.5      1
>  8   0.55     1
>  9   1        1
> 10  NA        1
> 11 NaN        1
> {code}
> However truncate works just fine:
> {code}
> > Table$create(df) %>% 
> +   mutate(
> +     r = trunc(0.00001 + 1)
> +   ) %>%
> +   collect()
> # A tibble: 11 × 2
>         x     r
>     <dbl> <dbl>
>  1  -1        1
>  2  -0.55     1
>  3  -0.5      1
>  4  -0.1      1
>  5   0        1
>  6   0.1      1
>  7   0.5      1
>  8   0.55     1
>  9   1        1
> 10  NA        1
> 11 NaN        1
> > 
> > 
> > Table$create(df) %>% 
> +   mutate(
> +     r = trunc(x + 1)
> +   ) %>%  collect()
> # A tibble: 11 × 2
>         x     r
>     <dbl> <dbl>
>  1  -1        0
>  2  -0.55     0
>  3  -0.5      0
>  4  -0.1      0
>  5   0        1
>  6   0.1      1
>  7   0.5      1
>  8   0.55     1
>  9   1        2
> 10  NA       NA
> 11 NaN      NaN
> > 
> {code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)