remove the last element of a vector

后端 未结 4 603
猫巷女王i
猫巷女王i 2020-12-14 14:29

I need to remove the last number in a groups of vectors, i.e.:

v <- 1:3
v1 <- 4:8

should become:

v <- 1:2
v1 <-         


        
4条回答
  •  无人及你
    2020-12-14 14:47

    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> 
    

提交回复
热议问题