在R中是否存在使用"哪个"索引不能与R中的逻辑索引混合的情况?我似乎记得几个月前碰到了这两个问题 - R的味道保留了一些行号的内部概念,这与我在其他地方使用逻辑索引后使用"which"的效果不佳删掉一些行.
这是一个众所周知的现象,还是我梦想了整个事情?
nul*_*lob 10
请注意,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
Run Code Online (Sandbox Code Playgroud)
which 返回索引号以从一个向量中选择元素或从矩阵/数组或data.frame中选择切片,这些元素不能与逻辑向量"混合"
考虑此向量中所有数字> 5的逻辑向量:
x <- 1:10
x > 5
[1] FALSE FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE TRUE
Run Code Online (Sandbox Code Playgroud)
这是一个10元素的逻辑向量,但which()等价的长度为5:
其中(x> 5)[1] 6 7 8 9 10
关于不能混合这些东西并没有什么复杂的,他们只是不去一起.第一个隐含地丢弃前五个元素,并通过数据和逻辑向量之间的位置匹配来保留最后五个元素
x[x > 5]
Run Code Online (Sandbox Code Playgroud)
第二个是明确只选择最后五个元素
x[which(x > 5)]
Run Code Online (Sandbox Code Playgroud)
同样的结果,但"["运算符的参数在每种情况下都是完全不同的.无论所选元素是向量中的单个值还是a中的行,这都适用data.frame.