Я работаю на определенных изображениях, которые могут иметь несколько полос/каналов (ср. Мультиспектральные и гиперспектральные изображения с дистанционным зондированием).Удаление строк для объекта SpatialGridDataFrame, где выполняются определенные условия.
Предположим, что мы не знаем заранее, сколько полос существует в данном изображении. Все каналы называются «band1», «band2» ... и так далее. Для того, чтобы прочитать изображение, которое мы используем
library(sp)
library(rgdal)
image <- readGDAL("image.tif')
Мы принимаем это в data.frame
первый:
imdata <- [email protected]
Там могут быть некоторые ситуации, когда содержимое всех полос для конкретного «пикселя» равен нулю. Поэтому, если это четыре полосы изображения, то мы можем отбросить эти строки из data.frame
с помощью:
imData <- imData[!((imData$band1==0) & (imData$band2==0) & (imData$band3 == 0) & (imData$band4 == 0)),]
Но предположим, что мой образ имеет 256 полос. Как удалить такие строки из набора данных?
Не тестировался 'imData [! Уменьшить ('&', imData == 0)]' и, возможно, также '!! rowSums (imData! = 0)' – akrun
Я думаю, Первый - это 'imData [! Reduce (' & ', as.data.frame (imData == 0))),]' – akrun