[英]R vector subset syntax?
我在R中工作,发现一种奇怪的行为。 我可以解决它,但这看起来很奇怪,所以我想知道是否有人可以解释为什么我得到以下输出:
> xlabs <- 1:367
> i <- c(2:5)
> Date[xlabs == i]
character(0)
Warning message:
In xlabs == i :
longer object length is not a multiple of shorter object length
> Date[xlabs = i]
[1] "2011-07-19" "2011-07-20" "2011-07-21" "2011-07-22"
我不明白为什么逻辑等式不适用于这种情况,而简单的等式却适用。 我正在写一本关于如何在R中进行特定分析过程的快速手册,并且我不想为了读者的缘故使用“只是因为”解释。
您想要的运算符是%in%
:
Date[xlabs %in% i]
=
并没有按照您的想法做。 在xlabs
的最后一行之后查看xlabs
。 您将xlabs
设置为i
,就像xlabs <- i
as =
几乎替代了<-
。
==
由于比较方式不起作用。 考虑:
> 1:10 == 5:7
[1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
Warning message:
In 1:10 == 5:7 :
longer object length is not a multiple of shorter object length
这样做是:
> 1 == 5
[1] FALSE
> 2 == 6
[1] FALSE
> 3 == 7
[1] FALSE
> 4 == 5
[1] FALSE
> 5 == 6
[1] FALSE
> 6 == 7
[1] FALSE
> 7 == 5
[1] FALSE
> 8 == 6
[1] FALSE
> 9 == 7
[1] FALSE
> 10 == 5
[1] FALSE
R通过重复较短的向量以匹配较长的长度来循环利用它。 由于length(xlabs)
并非length(i)
的精确倍数,因此您会收到警告,但比较本身并未选择任何内容
> 1[FALSE]
numeric(0)
因此为空向量(在您的情况下为空字符向量)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.