Addresses within Vectors
There are two important functions for finding addresses within arrays. The function which is very easy to understand. The vector y (see above) looks like this:
y
[1] 8 3 5 7 6 6 8 9 2 3 9 4 10 4 11
Suppose we wanted to know which elements of y contained values bigger than 5. We type
which(y>5)
[1] 1 4 5 6 7 8 11 13 15
Notice that the answer to this enquiry is a set of subscripts. We don't use subscripts inside the which function itself. The function is applied to the whole array. To see the values of y that are larger than 5, we just type
y[y>5]
[1] 8 7 6 6 8 9 9 10 11
Note that this is a shorter vector than y itself, because values of 5 or less have been left out:
length(y) [1] 15 length(y[y>5]) [1] 9
To extract every nth element from a long vector we can use seq as an index. In this case I want every 25th value in a 1000-long vector of normal random numbers with mean value 100 and standard deviation 10:
xv<-rnorm(1000,100,10) xv[seq(25,length(xv),25)] [1] 100.98176 91.69614 116.69185 97.89538 108.48568 100.32891 94.46233 [8] 118.05943 92.41213 100.01887 112.41775 106.14260 93.79951 105.74173 [15] 102.84938 88.56408 114.52787 87.64789 112.71475 106.89868 109.80862 [22] 93.20438 96.31240 85.96460 105.77331 97.54514 92.01761 97.78516 [29] 87.90883 96.72253 94.86647 90.87149 80.01337 97.98327 92.77398 [36] 121.47810 92.40182 87.65205 115.80945 87.60231
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access