簡體   English   中英

R%in%不適用於大於-0.999的值

[英]R %in% doesn't work for values greater than -0.999

今天我遇到了一個奇怪的地方,我找不到解釋。

我有一個間隔(-0.031,0.105),我想測試一下其中是否為0(零)。 很簡單,但是...

> 0 %in% -0.031:0.105
[1] FALSE

快速播放表明,對於小於-1的值,R可以很高興地做到這一點。

> 0 %in% -1.0:0.105
[1] TRUE

任何人都可以闡明為什么這不能按預期方式工作以及如何解決嗎?

%in%運算符

%in%運算符在向量中查找值,如果找到該值(至少一次),則返回TRUE 一些例子:

0 %in% c(-1,0,1)
> TRUE # zero is in the vector
0 %in% c(-0.5,0.5)
> FALSE # zero is not in the vector
'Anna' %in% c('Anna','Bob')
> TRUE # it also works for characters

運營商

:運算符是seq(from,to)縮寫。 seq()的默認值之一是默認為1的步驟。 因此,這將是代碼的輸出:

-0.031:0.105
> [1] -0.031 # (to is less than 1 higher than from)
-1.0:0.105
> [1] -1  0 # (here he can actually add a second number which is the 0)

如您所見,這並不是您想要實現的行為。 但是,有一個函數可以做到這一點:

之間的功能

Bot dplyr和data.table提供創建此行為的函數: dplyr::between(value, lower, upper)data.table::between(value, lower, upper) data.table %between%運算符基於data.table::between()函數。 因此,您可以執行以下操作:

between(0,-0.031,0.105)
> TRUE

它將正確返回TRUE

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM