[Rd] Accessing vector elements by a factor (PR#10971)

dennis.walvoort at wur.nl dennis.walvoort at wur.nl
Mon Mar 17 14:20:06 CET 2008


Full_Name: Dennis Walvoort
Version: 2.6.2
OS: MS Windows XP
Submission from: (NULL) (137.224.252.10)


I've encountered a problem when extracting vector elements by a factor.

Let's create a (named) character vector v:

i <- 1:10
v <- letters[i]
names(v) <- i

Let iInt, iChr, and iFac denote integer, character, and factor indices
respectively:

iInt <- i
iChr <- as.character(i)
iFac <- factor(iChr)

Now, consider the following tests:

all.equal(v, v[iInt]) # TRUE
all.equal(v, v[iChr]) # TRUE
all.equal(v, v[iFac]) # FALSE
all.equal(v, v[as.character(iFac)]) # TRUE

The third test returns FALSE. It seems that the internal factor coding is used
to extract vector elements and not the factor levels:

all.equal(v[iFac], v[as.integer(iFac)]) # TRUE

Is this intended behaviour?


Kind regards,

Dennis Walvoort



Version:
 platform = i386-pc-mingw32
 arch = i386
 os = mingw32
 system = i386, mingw32
 status = 
 major = 2
 minor = 6.2
 year = 2008
 month = 02
 day = 08
 svn rev = 44383
 language = R
 version.string = R version 2.6.2 (2008-02-08)

Windows XP (build 2600) Service Pack 2

Locale:
LC_COLLATE=English_United Kingdom.1252;LC_CTYPE=English_United
Kingdom.1252;LC_MONETARY=English_United
Kingdom.1252;LC_NUMERIC=C;LC_TIME=English_United Kingdom.1252

Search Path:
 .GlobalEnv, package:stats, package:graphics, package:grDevices, package:utils,
package:datasets, package:methods, Autoloads, package:base



More information about the R-devel mailing list