I need to remove the last number in a groups of vectors, i.e.:
v <- 1:3 v1 <- 4:8
should become:
v <- 1:2 v1 <- 4:7
If you want to access the last element of your vector use vec. back() , which returns a reference (and not iterator). Do note however that if the vector is empty, this will lead to an undefined behavior; most likely a crash.
All the elements of the vector are removed using clear() function. erase() function, on the other hand, is used to remove specific elements from the container or a range of elements from the container, thus reducing its size by the number of elements removed.
To remove first element of a vector, you can use erase() function. Pass iterator to first element of the vector as argument to erase() function.
You can use negative offsets in head
(or tail
), so head(x, -1)
removes the last element:
R> head( 1:4, -1) [1] 1 2 3 R>
This also saves an additional call to length()
.
Edit: As pointed out by Jason, this approach is actually not faster. Can't argue with empirics. On my machine:
R> x <- rnorm(1000) R> microbenchmark( y <- head(x, -1), y <- x[-length(x)], times=10000) Unit: microseconds expr min lq median uq max 1 y <- head(x, -1) 29.412 31.0385 31.713 32.578 872.168 2 y <- x[-length(x)] 14.703 15.1150 15.565 15.955 706.880 R>
Use length to get the length of the object and - to remove the last one.
v[-length(v)]
A negative index in R extracts everything but the given indices.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With