我是R脚本的新手,这是我的简单问题, 如何在单个命令中从文件中提取前100个和后100个值。
top<- head(xdata, 100)
bottom <- head(xdata, 100)
但我想要单一命令
像这样......both <- head(xdata, 100) + head(xdata, 100)
由于
答案 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倍。