在R中提取前100个和后100个值

时间:2016-05-11 21:21:30

标签: r

我是R脚本的新手,这是我的简单问题, 如何在单个命令中从文件中提取前100个和后100个值。

top<- head(xdata, 100)

bottom <- head(xdata, 100)

但我想要单一命令

像这样......

both <- head(xdata, 100) +  head(xdata, 100)

由于

1 个答案:

答案 0 :(得分:4)

如果 n 是数据向量的长度,你可以这样做。

 # 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倍。