Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

remove the last element of a vector

Tags:

r

vector

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 
like image 388
Elizabeth Avatar asked Aug 24 '12 17:08

Elizabeth


People also ask

How do you find the last element of a vector?

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.

How do I delete part of a vector?

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.

How do I remove the first element of a vector?

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.


2 Answers

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>  
like image 184
Dirk Eddelbuettel Avatar answered Oct 18 '22 07:10

Dirk Eddelbuettel


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.

like image 26
Luciano Selzer Avatar answered Oct 18 '22 06:10

Luciano Selzer