Alternatively, the man page for the strsplit() could include the following
(or a better phrased version):
"
Note that the trailing empty values will be trimmed (see penultimate
example). A way around this is to use> read.table(text = paste(strings.to.split, collapse = "\n"), sep =
split)
"
Dzmitry
On Thu, 3 Mar 2022 at 04:13, Henrik Bengtsson <henrik.bengtsson at
gmail.com>
wrote:
> Here's an example clarifying the issue:
>
> > strsplit("a:b:c:d", split = ":", fixed = TRUE)
> [[1]]
> [1] "a" "b" "c" "d"
>
> > strsplit("a:b:c:", split = ":", fixed = TRUE)
> [[1]]
> [1] "a" "b" "c"
>
> I also ran into this a few times, and I agree that this complicated
> things when you need to preserve that last empty element. Instead of
> changing the default behavior, which would probably break lots of
> existing code relying on it, one could introduce a new,
> backward-compatible argument `drop = TRUE`, e.g.
>
> > strsplit("a:b:c:", split = ":", fixed = TRUE, drop
= FALSE)
> [[1]]
> [1] "a" "b" "c" ""
>
> My $.02
>
> /Henrik
>
>
>
> On Sat, Feb 26, 2022 at 6:39 AM Dzmitry Batrakou <d.batrakou at
gmail.com>
> wrote:
> >
> > Hello,
> >
> > I would like to suggest changing the behaviour of the strsplit()
function
> > with multiple trailing empty values. Currently, `strsplit(x =
'value::',
> > split = ':')` produces a list of length 2
('value',''). This behaviour is
> > documented in the manual (penultimate example), however, I would
argue,
> is
> > illogical and can lead to unexpected parsing results. One example is
> > splitting delimited value strings into a table.
> >
> > Regards,
> > Dzmitry
> >
> > [[alternative HTML version deleted]]
> >
> > ______________________________________________
> > R-devel at r-project.org mailing list
> > https://stat.ethz.ch/mailman/listinfo/r-devel
>
[[alternative HTML version deleted]]