1

我知道这个问题已经发布,但答案是通过其他方式解决给定问题的技巧,但核心问题仍未得到解答。

问题是这样的。

somevector <- 1:5
emptyindeces <- vector()
somevector[-emptyindeces] #returns empty vector

为什么不是原始向量?

这是有原因的还是我理解错了。如果是这样,那么获取索引向量的补码的正确方法是什么。

4

3 回答 3

0

emptyindiceslogical(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)
于 2013-04-10T08:56:47.333 回答
0

那是因为-0 = 0?但是我可以看到如果忽略这一方面,算法会如何遇到问题。所以我建议使用setdiff而不是负指数。

于 2013-04-10T09:00:26.510 回答
0

somevector <- c(1:5,NA,8)
sumvec<-subset(somevector,!is.na(somevector))

不太确定这是否是您想要的,但如果您想要不同的东西,请告诉我,以便我纠正我的答案。如果这是您要寻找的答案,则带有标签的答案是替代答案。

于 2013-04-10T09:14:59.760 回答