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

Keith Hughitt commented on ARROW-7825:
--------------------------------------

[~npr] That's a fair argument and a good point. Preserving the actual type of 
iris$Species is certainly preferred.

 

The down-side is still that the rest of the R ecosystem `read_xx` functions are 
generally not going to behave this way, so I think many users are going to be 
caught off-guard by this (speaking from experience..)

 

I'm not sure what the best solution is here. In principle, I agree that the 
current behavior is the most sensible, so perhaps it is just a matter of 
educating the community to be aware of these differences when working with 
filetypes that are able to properly encode factor variables.

 

Perhaps just including a note in the `read_feather()` and `read_parquet()` docs 
mentioning this expected difference in behavior compared with the other read 
functions?

> Have arrow::read_parquet respect options(stringsAsFactors = FALSE)
> ------------------------------------------------------------------
>
>                 Key: ARROW-7825
>                 URL: https://issues.apache.org/jira/browse/ARROW-7825
>             Project: Apache Arrow
>          Issue Type: Improvement
>          Components: R
>    Affects Versions: 0.16.0
>         Environment: Linux 64-bit 5.4.15
>            Reporter: Keith Hughitt
>            Priority: Major
>              Labels: R, parquet
>
> Same issue as reported for feather::read_feather 
> (https://issues.apache.org/jira/browse/ARROW-7823);
>  
> For the R arrow package, the "read_parquet()" function currently does not 
> respect "options(stringsAsFactors = FALSE)", leading to 
> unexpected/inconsistent behavior.
>  
> *Example:*
>  
>  
> {code:java}
> library(arrow)
> library(readr)
> options(stringsAsFactors = FALSE)
> write_tsv(head(iris), 'test.tsv')
> write_parquet(head(iris), 'test.parquet')
> head(read.delim('test.tsv', sep='\t')$Species)
> # [1] "setosa" "setosa" "setosa" "setosa" "setosa" "setosa"
> head(read_tsv('test.tsv', col_types = cols())$Species)
> # [1] "setosa" "setosa" "setosa" "setosa" "setosa" "setosa"
> head(read_parquet('test.parquet')$Species)
> # [1] setosa setosa setosa setosa setosa setosa
> # Levels: setosa versicolor virginica
> {code}
>  
>  
> *Versions:*
> - R 3.6.2
> - arrow_0.15.1.9000



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

Reply via email to