Подтвердить что ты не робот

Удалите последние N строк в кадре данных с произвольным количеством строк

У меня есть кадр данных, и я хочу удалить из него последние N строк. Если я хочу удалить 5 строк, в настоящее время я использую следующую команду, которая, на мой взгляд, довольно запутана:

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

Как бы вы выполнили задачу, есть ли удобная функция, которую я могу использовать в R?

В unix я бы использовал:

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

Ответ 1

head с отрицательным индексом удобно для этого...

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

p.s. ваш пример seq() может быть написан немного меньше (?) неудобно, используя именованные аргументы by и length.out (сокращен до len), как этот -seq(nrow(df),by=-1,len=5).

Ответ 2

Это займет еще одну строку, но гораздо читабельнее:

n<-dim(df)[1]
df<-df[1:(n-5),]

Конечно, вы можете сделать это в одной строке, вставив команду dim непосредственно в оператор повторного присваивания. Я предполагаю, что это часть воспроизводимого script, и вы можете повторить шаги... В противном случае настоятельно рекомендуется в таких случаях сохранять в другую переменную (например, df2), а затем удалять избыточную копию только после того, как вы "Конечно, вы получили то, что хотели.