[
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)