Как отфильтровать набор данных задачи mlr3 по значению функции

У меня есть задача mlr3, где у меня есть такой набор данных:

Набор данных "все"

all <- data.frame(v1 = c("a", "b"),
              v2 = c(1, 2),
              data = c("test", "train"))

library(mlr3)
task <- TaskClassif$new("loan", all, target = "v1")

Как отфильтровать задачу по столбцу "данные", значению "поезд"?

Я пробовал task$filter(data == "train") и множество других комбинаций, но не работает.

dput(task)
<environment>

str(task)
Classes 'TaskClassif', 'TaskSupervised', 'Task', 'R6' <TaskClassif:loan>

1 ответ

Решение

E сть as.data.table метод

methods(class = 'Task')
#[1] as_task       as_tasks      as.data.table

Итак, мы можем преобразовать его в data.table и используйте методы data.table для подмножества

library(data.table)
as.data.table(task)[data == 'train']
#   v1  data v2
#1:  b train  2

Или можно извлечь data

task$data()[data == 'test']
#    v1 data v2
#1:  a test  1

Или создайте новый экземпляр

tasktrain <-  TaskClassif$new("loantrain",
           task$data()[data == 'train'], target = "v1")
tasktrain$data()
#   v1  data v2
#1:  b train  2
Другие вопросы по тегам