逻辑索引的Gotchas和R中的“which”
在R中是否存在不能将其用于索引与R中的逻辑索引混合使用的情况?我似乎记得几个月前遇到了一个关于这两个问题的难题——有一种R的味道,它保持了一些行数的内部概念,在我在其他地方使用逻辑索引删除了一些行之后,它的使用并没有很好地发挥作用 这是一个已知的现象,还是我做了整个梦 返回索引号以从向量中选择元素,或从矩阵/数组或data.frame中选择切片,并且这些不能与逻辑向量混合 考虑此向量中所有大于5的数字的逻辑向量:逻辑索引的Gotchas和R中的“which”,r,indexing,R,Indexing,在R中是否存在不能将其用于索引与R中的逻辑索引混合使用的情况?我似乎记得几个月前遇到了一个关于这两个问题的难题——有一种R的味道,它保持了一些行数的内部概念,在我在其他地方使用逻辑索引删除了一些行之后,它的使用并没有很好地发挥作用 这是一个已知的现象,还是我做了整个梦 返回索引号以从向量中选择元素,或从矩阵/数组或data.frame中选择切片,并且这些不能与逻辑向量混合 考虑此向量中所有大于5的数字的逻辑向量: x <- 1:10 x > 5 [1] FALSE FALSE FAL
x <- 1:10
x > 5
[1] FALSE FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE TRUE
第二个是明确地只选择最后五个元素
x[which(x > 5)]
相同的结果,但[运算符的参数在每种情况下都非常不同。这适用于所选元素是向量中的单例值还是data.frame中的行。请注意,NA和其他此类条目可能会混淆情况。以下是@mdsumner的示例:
> x <- c(1:10,NA,NaN,Inf)
> x > 5
[1] FALSE FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE TRUE NA NA
[13] TRUE
> x[x > 5]
[1] 6 7 8 9 10 NA NA Inf
> x[which(x > 5)]
[1] 6 7 8 9 10 Inf
是的,但是,正如你所指出的,我不太明白。我意识到了这一点,并且非常确定这不是绊倒我的原因。不确定这是不是真的,但这确实很棘手。谢谢!你为什么要用它?很可能你不需要它。
> x <- c(1:10,NA,NaN,Inf)
> x > 5
[1] FALSE FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE TRUE NA NA
[13] TRUE
> x[x > 5]
[1] 6 7 8 9 10 NA NA Inf
> x[which(x > 5)]
[1] 6 7 8 9 10 Inf