我知道这个问题已经发布,但答案是通过其他方式解决给定问题的技巧,但核心问题仍未得到解答。
问题是这样的。
somevector <- 1:5
emptyindeces <- vector()
somevector[-emptyindeces] #returns empty vector
为什么不是原始向量?
这是有原因的还是我理解错了。如果是这样,那么获取索引向量的补码的正确方法是什么。
我知道这个问题已经发布,但答案是通过其他方式解决给定问题的技巧,但核心问题仍未得到解答。
问题是这样的。
somevector <- 1:5
emptyindeces <- vector()
somevector[-emptyindeces] #returns empty vector
为什么不是原始向量?
这是有原因的还是我理解错了。如果是这样,那么获取索引向量的补码的正确方法是什么。
emptyindices
是logical(0)
(长度 = 0 的逻辑向量)并-emptyindices
变为integer(0)
。因此,您正在查询索引长度为 0 的向量。您得到一个长度 = 0 整数向量。
例如,您可能正在寻找setdiff
:
v <- 6:10
idx1 <- c(1,3)
idx2 <- vector()
idx3 <- 1:5
v[setdiff(seq_along(v), idx1)]
# [1] 7 9 10
v[setdiff(seq_along(v), idx2)]
# [1] 6 7 8 9 10
v[setdiff(seq_along(v), idx3)]
# integer(0)
那是因为-0 = 0
?但是我可以看到如果忽略这一方面,算法会如何遇到问题。所以我建议使用setdiff
而不是负指数。
somevector <- c(1:5,NA,8)
sumvec<-subset(somevector,!is.na(somevector))
不太确定这是否是您想要的,但如果您想要不同的东西,请告诉我,以便我纠正我的答案。如果这是您要寻找的答案,则带有标签的答案是替代答案。