Search code examples
rdataframerow

Remove last N rows in data frame with the arbitrary number of rows


I have a data frame and I want to remove last N rows from it. If I want to remove 5 rows, I currently use the following command, which in my opinion is rather convoluted:

df<- df[-seq(nrow(df),nrow(df)-4),]

How would you accomplish task, is there a convenient function that I can use in R?

In unix, I would use:

tac file | sed '1,5d' | tac 

Solution

  • head with a negative index is convenient for this...

    df <- data.frame( a = 1:10 )
    head(df,-5)
    #  a
    #1 1
    #2 2
    #3 3
    #4 4
    #5 5
    

    p.s. your seq() example may be written slightly less(?) awkwardly using the named arguments by and length.out (shortened to len) like this -seq(nrow(df),by=-1,len=5).