[R] ave(x, y, FUN=length) produces character output when x is character

Bert Gunter gunter.berton at gene.com
Fri Dec 26 00:19:31 CET 2014


You persist in failing to read the docs! Moreover, neither Hadley
Wickham, nor anyone else, is the authoritative source for R usage
(other than for the (many!) packages he, himself has authored). R's
Help pages and manuals -- and ultimately the source code -- are the
only such source.

?factor says in its very first line:

"The function factor is used to encode a **vector** as a factor (the
terms ‘category’ and ‘enumerated type’ are also used for factors)...."
(emphasis added)

and:

> f <- factor (letters[1:3])
> f
[1] a b c
Levels: a b c

> attributes(f)
$levels
[1] "a" "b" "c"

$class
[1] "factor"

> is.vector(f)
[1] FALSE

> attributes(f) <- NULL

> f
[1] 1 2 3
> is.vector(f)
[1] TRUE

Don't you think it's time to call a halt to this?


Cheers,
Bert

Bert Gunter
Genentech Nonclinical Biostatistics
(650) 467-7374

"Data is not information. Information is not knowledge. And knowledge
is certainly not wisdom."
Clifford Stoll




On Thu, Dec 25, 2014 at 2:45 PM, Mike Miller <mbmiller+l at gmail.com> wrote:
> On Thu, 25 Dec 2014, Mike Miller wrote:
>
>> I was going to ask a question about it how to test that an object is a
>> vector, but then I found this:
>>
>> "is.vector() does not test if an object is a vector. Instead it returns
>> TRUE only if the object is a vector with no attributes apart from names. Use
>> is.atomic(x) || is.list(x) to test if an object is actually a vector."
>>
>> From here:
>>
>> http://adv-r.had.co.nz/Data-structures.html#vectors
>
>
>
> But here...
>
> https://stat.ethz.ch/R-manual/R-devel/library/base/html/vector.html
>
> ...I read, "Note that factors are *not* vectors" (emphasis theirs), yet...
>
>
>> d <- gl(2,2)
>
>
>> is.factor(d)
>
> [1] TRUE
>
>> is.atomic(d) || is.list(d)
>
> [1] TRUE
>
>> is.list(d)
>
> [1] FALSE
>
>> is.atomic(d)
>
> [1] TRUE
>
>> is.vector(d)
>
> [1] FALSE
>
> So the factor is not a vector according to R documentation, but it is a
> vector according to the Wickham test, and it is not a vector according to
> is.vector().  Admittedly, the latter seems not to mean much to the R
> experts.  Maybe a factor is just a vector with additional attributes.
>
> Mike



More information about the R-help mailing list