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