Моя общая цель - классифицировать изображение, используя случайный лес.Фрейм данных содержит данные обучения;где 'landcover' содержит классы 0, 1 и 2. Я пытаюсь уменьшить количество классов, изменив все 2 на 0, используя метод dplyr transmute ().Весь код работает за исключением критической последней строки - GP_training1 <- transmute(GP_data$landcover, landcover = ifelse(landcover==1,1,0))
.Когда я запускаю это, я получаю сообщение об ошибке: нет применимого метода для 'mutate_', примененного к объекту класса "c ('integer', 'numeric')".Есть идеи, почему это может быть?Соответствующий код вставлен ниже.
#import raster and shapefile; each color band is overlayed on top of
eachother w coordinate system underneath
GP_1_4 <- brick("Downloads/Landsat Mosaics/GP_1-4.tif")
names(GP_1_4) <- c("Red","Green","SWIR")
GP_1_4 <- subset(GP_1_4, order(c(3, 2, 1)))
plotRGB(GP_1_4,stretch="lin")
#import shapefile of training points
GP_training < readOGR("Downloads/GP_716_shapefile3/GP_716_training3.shp", layer="GP_716_training3")
list.files("GP_716_shapefile3")
#extract points from raster
dataSet <- as.data.frame(extract(GP_1_4, GP_training))
#and put in same dataframe as training data
GP_training$data = data.frame(GP_training$data, dataSet[match(rownames(GP_training$data), rownames(dataSet)),])
GP_training$data = GP_training$data[complete.cases(GP_training$data),]
#make a new dataframe, identical to GP_training, except the 2's are changed to 0's
GP_training1 <- GP_training
GP_data <- GP_training1$data
GP_training1 <- transmute(GP_data$landcover, landcover = ifelse(landcover==1,1,0))
НОВОЕ РЕДАКТИРОВАНИЕ: Используя функцию isS4 (), я обнаружил, что GP_training является объектом S4.Между тем, в документации R говорится, что «все главные глаголы являются обобщениями S3» для transmute ().Я не очень знаком с S3 и S4, но может ли это быть там, где происходит ошибка?