This helper function is used by `read.table`

. When the
data object `x`

is a data frame or list, the function is called
recursively for each column or list element.

Given a vector, the function attempts to convert it to logical,
integer, numeric or complex, and failing that converts a character
vector to factor unless `as.is = TRUE`

. The first type that can
accept all the non-missing values is chosen.

Vectors which are entirely missing values are converted to logical,
since `NA`

is primarily logical.

Vectors containing just `F`

, `T`

, `FALSE`

, `TRUE`

and values from `na.strings`

are converted to logical. Vectors
containing optional whitespace followed by decimal constants
representable as R integers or values from `na.strings`

are
converted to integer. Other vectors containing optional whitespace
followed by other decimal or hexadecimal constants (see
NumericConstants), or `NaN`

, `Inf`

or `infinity`

(ignoring case) or values from `na.strings`

are converted to
numeric. Where converting inputs to numeric or complex would result
in loss of accuracy they can optionally be returned as strings (for
`as.is = TRUE`

) or factors.

Since this is a helper function, the caller should always pass an
appropriate value of `as.is`

.