You can use negative offsets in head
(or tail
), so head(x, -1)
removes the last element:
R> head( 1:4, -1)
[1] 1 2 3
R>
This also saves an additional call to length()
.
Edit: As pointed out by Jason, this approach is actually not faster. Can't argue with empirics. On my machine:
R> x <- rnorm(1000)
R> microbenchmark( y <- head(x, -1), y <- x[-length(x)], times=10000)
Unit: microseconds
expr min lq median uq max
1 y <- head(x, -1) 29.412 31.0385 31.713 32.578 872.168
2 y <- x[-length(x)] 14.703 15.1150 15.565 15.955 706.880
R>
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…