'Error in makeClassifTask - columns to join must specify "on="

I am getting an error here for the makeClassifTask() from MLR package.

task = makeClassifTask(data = data[,2:20441], target='Disease')

Entering this I get this error.

Provided data is not a pure data.frame but from class data.table, hence it will be converted. Error in [.data.table(data, target) : When i is a data.table (or character vector), the columns to join by must be specified using 'on=' argument (see ?data.table), by keying x (i.e. sorted, and, marked as sorted, see ?setkey), or by sharing column names between x and i (i.e., a natural join). Keyed joins might have further speed benefits on very large data due to x being sorted in RAM.

If someone could help me out it'd be great.



Solution 1:[1]

Given that you did not provide the data I can only do some guessing and suggest to read the documentation at https://mlr3book.mlr-org.com/tasks.html.

It looks like you left out the first column in your dataset which might be your target. Hence makeClassifTask() cannot find your target column.

Solution 2:[2]

As @Shreyash Gputa pointed out correctly, changing the data.table object to a data.frame object solves the issue:

task = makeClassifTask(data = as.data.frame(data[,2:20441]), target='Disease')

Given of course that data[,2:20441] contains the target variable Disease...

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 pat-s
Solution 2 MJimitater