dplyr :: between 및 filter의 이상한 동작

마티아스 안 디나

나는이 data.frame내가의 범위 여부에 따라 필터링 할 low로는 high0을 포함합니다. 여기에 예가 있습니다.

head(toy)
# A tibble: 6 x 3
  difference     low  high
       <dbl>   <dbl> <dbl>
1     0.0161 -0.143  0.119
2     0.330   0.0678 0.656
3     0.205  -0.103  0.596
4     0.521   0.230  0.977
5     0.328   0.177  0.391
6    -0.0808 -0.367  0.200

저는 dplyr::between()이런 종류의 필터링 작업을 수백만 번 수행했습니다 ( datetimeS3 객체에 대해 경고 하는 class 열에서도 ). 그러나 나는 이것에 무엇이 잘못되었는지 찾을 수 없습니다.

# Does does not find anything
toy %>%
  filter(!dplyr::between(0, low, high))

# Maybe it's because it needs `x` to be a vector, using mutate
# Does not find anything
toy %>%
  mutate(zero = 0) %>% 
  filter(!dplyr::between(zero, low, high))

# if we check the logic, all "keep" go to FALSE
toy %>% 
  mutate(zero = 0, 
         keep = !dplyr::between(zero, low, high)) 

# data.table::between works
toy %>% 
  filter(!data.table::between(0, low, high))

# regular logic works
toy %>% 
  filter(low > 0 | high < 0)

아래 데이터 :

> dput(toy)
structure(list(difference = c(0.0161058505175378, 0.329976207353122, 
                              0.20517072042705, 0.520837282826481, 0.328289597476641, -0.0807728725339096, 
                              0.660320444135006, 0.310679750033675, -0.743294517440579, -0.00665462977775899, 
                              0.0890903981794149, 0.0643321993757249, 0.157453334405998, 0.107320325893175, 
                              -0.253664041938671, -0.104025850079389, -0.284835573264143, -0.330557762091307, 
                              -0.0300387610595219, 0.081297046765014), low = c(-0.143002432870633, 
                                                                               0.0677907794288728, -0.103344717845837, 0.229753302951895, 0.176601773133456, 
                                                                               -0.366899428200429, 0.403702557199546, 0.0216878391530755, -1.01129163487875, 
                                                                               -0.222395625167488, -0.135193611295608, -0.116654715121314, -0.168581379777843, 
                                                                               -0.281919444558125, -0.605918194917671, -0.364539852350809, -0.500147478407119, 
                                                                               -0.505906196974183, -0.233810558283787, -0.193048952382206), 
               high = c(0.118860787421672, 0.655558974886329, 0.595905673925067, 
                        0.97748896372657, 0.391043536410999, 0.199727242557477, 0.914173497837859, 
                        0.633804982827898, -0.549942089679123, 0.19745782761473, 
                        0.340823604797603, 0.317956343103116, 0.501279107093568, 
                        0.442497779066522, 0.0721480109893818, 0.280593530192991, 
                        -0.0434862536882377, -0.229723776097642, 0.22550243301984, 
                        0.252686968655449)), row.names = c(NA, -20L), class = c("tbl_df", 
                                                                                "tbl", "data.frame"))

누군가 유용하다고 생각하는 경우를 대비하여

> "between" %in% conflicts()
[1] FALSE
> packageVersion("dplyr")
[1] ‘1.0.2’
tmfmnk

dplyr::between()벡터화되지 않습니다. 당신이 할 수있는 한 가지는 :

df %>%
 rowwise() %>%
 filter(!dplyr::between(0, low, high))

  difference     low    high
       <dbl>   <dbl>   <dbl>
1      0.330  0.0678  0.656 
2      0.521  0.230   0.977 
3      0.328  0.177   0.391 
4      0.660  0.404   0.914 
5      0.311  0.0217  0.634 
6     -0.743 -1.01   -0.550 
7     -0.285 -0.500  -0.0435
8     -0.331 -0.506  -0.230 

data.table::between() 이것이 작동하는 이유입니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

systimestamp 및 sysdate의 이상한 동작

분류에서Dev

$ resource 및 $ httpBackend의 AngularJS 이상한 동작

분류에서Dev

getline 및 awk의 이상한 동작

분류에서Dev

gluPerspective 및 gluLookAt의 이상한 동작

분류에서Dev

bash 및 .bashrc의 이상한 동작

분류에서Dev

Jupyter 노트북 및 가상 환경의 이상한 동작

분류에서Dev

상속 및 다형성의 이상한 동작 [자바]

분류에서Dev

유성 앱 및 데이터베이스의 이상한 동작

분류에서Dev

dplyr :: group_by_ 및 dplyr :: summarise_의 예기치 않은 동작

분류에서Dev

C 및 ctypes를 사용한 계산의 이상한 동작

분류에서Dev

Java 6 이상한 동작의 권한 및 File.renameTo

분류에서Dev

스레딩 및 타이머의 이상한 동작

분류에서Dev

PHP의 str_pad () 및 숫자의 이상한 동작

분류에서Dev

반응 후크의 이상한 동작 useEffect 및 ref 객체

분류에서Dev

React useState-useState 및 배열의 이상한 동작

분류에서Dev

$ or 및 $ text의 MongoDB 집계 이상한 동작

분류에서Dev

FIFO Sq 및 AWS Lambda의 이상한 동작

분류에서Dev

println 및 System.currentTimeMillis의 이상한 동작

분류에서Dev

forever, bash, apache 및 php의 이상한 동작

분류에서Dev

카메라 및 SurfaceView의 이상한 동작

분류에서Dev

C-while 및 for 루프의 이상한 동작

분류에서Dev

searchResultsTableView 및 self.tableView의 UISearchDisplayController 이상한 동작

분류에서Dev

JQM 테마 롤러 및 Phonegap의 이상한 동작

분류에서Dev

std :: unique_ptr 및 std :: ostringstream (SIGSEGV)의 이상한 동작

분류에서Dev

std 맵 및 shared_ptr의 이상한 메모리 동작

분류에서Dev

메서드 재정의 및 이상한 동작

분류에서Dev

재귀 및 Kernel # rand (Ruby)의 이상한 동작

분류에서Dev

bacon.js : holdWhen 및 onValue의 이상한 동작

분류에서Dev

`np.floor ()`및 float 나누기의 이상한 동작

Related 관련 기사

  1. 1

    systimestamp 및 sysdate의 이상한 동작

  2. 2

    $ resource 및 $ httpBackend의 AngularJS 이상한 동작

  3. 3

    getline 및 awk의 이상한 동작

  4. 4

    gluPerspective 및 gluLookAt의 이상한 동작

  5. 5

    bash 및 .bashrc의 이상한 동작

  6. 6

    Jupyter 노트북 및 가상 환경의 이상한 동작

  7. 7

    상속 및 다형성의 이상한 동작 [자바]

  8. 8

    유성 앱 및 데이터베이스의 이상한 동작

  9. 9

    dplyr :: group_by_ 및 dplyr :: summarise_의 예기치 않은 동작

  10. 10

    C 및 ctypes를 사용한 계산의 이상한 동작

  11. 11

    Java 6 이상한 동작의 권한 및 File.renameTo

  12. 12

    스레딩 및 타이머의 이상한 동작

  13. 13

    PHP의 str_pad () 및 숫자의 이상한 동작

  14. 14

    반응 후크의 이상한 동작 useEffect 및 ref 객체

  15. 15

    React useState-useState 및 배열의 이상한 동작

  16. 16

    $ or 및 $ text의 MongoDB 집계 이상한 동작

  17. 17

    FIFO Sq 및 AWS Lambda의 이상한 동작

  18. 18

    println 및 System.currentTimeMillis의 이상한 동작

  19. 19

    forever, bash, apache 및 php의 이상한 동작

  20. 20

    카메라 및 SurfaceView의 이상한 동작

  21. 21

    C-while 및 for 루프의 이상한 동작

  22. 22

    searchResultsTableView 및 self.tableView의 UISearchDisplayController 이상한 동작

  23. 23

    JQM 테마 롤러 및 Phonegap의 이상한 동작

  24. 24

    std :: unique_ptr 및 std :: ostringstream (SIGSEGV)의 이상한 동작

  25. 25

    std 맵 및 shared_ptr의 이상한 메모리 동작

  26. 26

    메서드 재정의 및 이상한 동작

  27. 27

    재귀 및 Kernel # rand (Ruby)의 이상한 동작

  28. 28

    bacon.js : holdWhen 및 onValue의 이상한 동작

  29. 29

    `np.floor ()`및 float 나누기의 이상한 동작

뜨겁다태그

보관