Вы можете сделать это таким образом, если п длина вашего вектор данных.
# Fake data
n <- 10^6
xdata <- runif(n)
# Get first 100 and last 100 in vector
v <- xdata[c(1:100, (n-99):n)]
Вы также можете использовать tail
как кто-то упоминается в комментариях, но это более эффективно индексировать, как я сделал выше. Чтобы продемонстрировать это:
# Load microbenchmark package to compare computation speed
library(microbenchmark)
library(microbenchmark)
m <- microbenchmark("direct index" = xdata[c(1:100, (n-99):n)],
"head/tail" = c(head(xdata, 100), tail(xdata, 100)))
print(m)
#Unit: microseconds
# expr min lq mean median uq max neval
#direct index 2.814 3.028 3.54298 3.422 3.6950 16.255 100
#head/tail 29.239 30.691 34.61539 31.628 33.0045 110.648 100
Индексация на моей машине на 6,5 раза выше.
Если это кадр данных, тогда 'rbind (head (xdata, 100), tail (xdata, 100))'. Если это вектор, используйте 'c()' вместо 'rbind()'. – Gregor
В случае, если вы просто хотите просмотреть верхние + нижние n строк в консоли, вы можете использовать пакет 'data.table', который делает это по умолчанию. Например. 'print (xdata, topn = 100)' – lukeA
Спасибо Gregor и LukeA ....... c (head (xdata, 100), tail (xdata, 100)) работает ... – mona