我刚刚学习R,并尝试通过索引来解决问题以帮助我理解。但是,我试试这个代码,并没有得到我的期望:了解R中的索引
> x
[1] 3 6 1 NA 2
> x[!is.na(x[x>2])]
[1] 3 6 NA 2
不应该第二个命令的结果是x
不在NA
并GT 2
这些元素?换句话说,它应该返回3 6
。我对此不甚了解?
我刚刚学习R,并尝试通过索引来解决问题以帮助我理解。但是,我试试这个代码,并没有得到我的期望:了解R中的索引
> x
[1] 3 6 1 NA 2
> x[!is.na(x[x>2])]
[1] 3 6 NA 2
不应该第二个命令的结果是x
不在NA
并GT 2
这些元素?换句话说,它应该返回3 6
。我对此不甚了解?
作为
> !is.na(x[x>2])
[1] TRUE TRUE FALSE
当你的矢量的长度为5因此它会给
[1] TRUE TRUE FALSE TRUE TRUE
因此,x[c(1,2,4,5)]
是返回
我的方法将是
>x <- x[!is.na(s)]
>x[x>2]
[1] 3 6
我仍在考虑是否有一行代码能够完成任务。
好吧@ 6pool有提供一个更好的答案
x[!is.na(x) & x > 2]
这应该做你想要什么:
x[!is.na(x) & x > 2]
你的命令
x[!is.na(x[x>2])]
首先返回所有x[x>2]
,这是
3 6 NA
!is.na(c(3, 6, NA))
TRUE TRUE FALSE
因此x[!is.na(x[x>2])]
具有删除x的第三个元素的效果。
'x [!is.na(x)&x> 2]' – jenesaisquoi