问题描述
数据集“全部”
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>
解决方法
有一种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