If the input is a raw vector, then it is interpreted as ASCII/UTF-8 content
with LF ('\n') characters separating lines. If the input is a
character vector then each element is treated as a line.
If nsep is specified then all characters up to (but excluding)
the occurrence of nsep are treated as the row name. The
remaining characters are split using the sep character into
fields (columns). If ncol is NA then the first line of
the input determines the number of columns. mstrsplit will fail
with an error if any line contains more columns then expected unless
strict is FALSE. Excessive columns are ignored in that
case. Lines may contain fewer columns in which case they are set to
NA.
The processing is geared towards efficiency - no string re-coding is
performed and raw input vector is processed directly, avoiding the
creation of intermediate string representations.
Note that it is legal to use the same separator for sep and
nsep in which case the first field is treated as a row name and
subsequent fields as data columns.