проверить, находится ли список значений внутри списка диапазонов (класс за классом) - PullRequest
0 голосов
/ 21 мая 2018

Мне нужно знать, находится ли данное значение (данного класса) внутри диапазона.Я пытался решить мою проблему, используя apply и lapply вместе, но безуспешно.Вот пример того, что я пытаюсь сделать.

Предположим, что "mylist" - это список списков:

df1<-data.frame(classA=5.5,classB=6.3)
df2<-data.frame(classA=c(4.2,5.5),classB=c(5.1,6.2))
df3<-data.frame(classA=5.7,classB=4.2)
df4<-data.frame(classA=c(5.2,6.3),classB=c(4.0,5.0))
mylist<-list(list(df1,df2),list(df3,df4)) 

Я ожидаю, что результат будет примерно таким:

list(data.frame(TRUE,FALSE),data.frame(TRUE,TRUE))

Спасибо

Ответы [ 2 ]

0 голосов
/ 21 мая 2018

Вероятно, более простой способ сделать это

btw <- function(val, vec) {
    purrr::map2_lgl(val, vec, ~dplyr::between(.x, .y[1], .y[2]))
}

purrr::map(mylist, ~btw(.x[[1]], .x[[2]]))

# [[1]]
# classA classB 
  # TRUE  FALSE 

# [[2]]
# classA classB 
  # TRUE   TRUE
0 голосов
/ 21 мая 2018

Вот один из возможных эскизов для разработки решения:

library(tidyverse)

# 1. Data set with elements
df_element <- data.frame(
  class_a = 5.5, 
  class_b = 6.3)

# 2. Data set with range for elements
df_range <- data.frame(
  class_a = c(4.2, 5.5), 
  class_b = c(5.1, 6.2))

# 3. Check if element is inside range of values
df_element$class_a %in% seq(min(df_range$class_a), max(df_range$class_a), by = 0.1)
df_element$class_b %in% seq(min(df_range$class_b), max(df_range$class_b), by = 0.1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...