繁体   English   中英

R向量子集的语法?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM