R 当负索引可以是整数(0)时,如何安全地从向量中删除任何内容?

R 当负索引可以是整数(0)时,如何安全地从向量中删除任何内容?,r,vector,R,Vector,假设我有一个向量x=1:10,它是通过将另外两个向量a=integer(0)和b=1:10连接在一起构建的(这是一个边情况)。我想稍后将组合向量再次拆分为a和b。我本以为我可以用以下方法安全地将它们分开: i = seq_along(a) x[i] x[-i] 但是我发现当我使用x[-integer(0)]时,我得到的是integer(0)返回,而不是我天真地认为的x本身。做这类事情的最佳方法是什么?如果要使用负索引,索引可能会退化为整数(0)(例如,索引是根据哪个计算的),请在索引上填充一个

假设我有一个向量
x=1:10
,它是通过将另外两个向量
a=integer(0)
b=1:10
连接在一起构建的(这是一个边情况)。我想稍后将组合向量再次拆分为
a
b
。我本以为我可以用以下方法安全地将它们分开:

i = seq_along(a)
x[i]
x[-i]

但是我发现当我使用
x[-integer(0)]
时,我得到的是
integer(0)
返回,而不是我天真地认为的
x
本身。做这类事情的最佳方法是什么?

如果要使用负索引,索引可能会退化为
整数(0)
(例如,索引是根据
哪个
计算的),请在索引上填充一个较大的“越界”值。删除“越界”值没有副作用

x <- 1:10
i <- integer(0)
x[-c(i, 11)]  ## position 11 is "out-of-bound"
# [1]  1  2  3  4  5  6  7  8  9 10
警告:不要为此目的使用函数
ifelse

if (length(i)) x[-i] else x