Evolving notes, images and sounds by Luis Apiolaza

# Category: r(Page 20 of 20)

There are circumstances when one wants to generate all possible combinations of levels for two factors. For example, factor one with levels ‘A’, ‘B’ and ‘C’, and factor two with levels ‘D’, ‘E’, ‘F’. The function expand.grid() comes very handy here:

combo <- expand.grid(factor1 = LETTERS[1:3], factor2 = LETTERS[4:6])
combo

factor1 factor2
1       A       D
2       B       D
3       C       D
4       A       E
5       B       E
6       C       E
7       A       F
8       B       F
9       C       F


Omitting the variable names (factor1 and factor 2) will automatically name the variables as Var1 and Var2. Of course we do not have to use letters for the factor levels; if you have defined a couple of factors (say Fertilizer and Irrigation) you can use levels(Fertilizer) and levels(Irrigation) instead of LETTERS...

When processing data it is common to test if an observation belongs to a set. Let’s suppose that we want to see if the sample code belongs to a set that includes A, B, C and D. In R it is easy to write something like:

inside.set <- subset(my.data, code %in% c('A', 'B', 'C', 'D'))


Now, what happens if what we want are the observations that are not in that set? Simple, we use the negation operator (!) as in:

outside.set <- subset(my.data, !(code %in% c('A', 'B', 'C', 'D')))


In summary, surround the condition by !().