Я написал ряд функций для массивов в R, которые относятся к типу обработки изображений.
Это означает, что функции работают на:
- Массив 3 на массив (цвет) или
- массив n на m (на 1) (в оттенках серого).
Дело в том, что полутоновые изображения двумерные: dim(ary)
- это c(n,m)
.
Напротив, цветные изображения являются трехмерными: dim(ary)
- c(n,m,3)
.
На данный момент все мои функции имеют что-то вроде (следующий пример придуман, но демонстрирует мою проблему):
f <- function(img)
{
if ( length(dim(img)) == 2 )
return( img[1:10,] )
else
return( img[1:10,,] ) # Note the extra comma to select all 3D slices?
}
То есть мне всегда нужно включать проверку, чтобы сказать: «Если это двумерный массив, не вставляйте лишнюю запятую, которая указывает« все в третьем измерении »».
Есть ли способ, которым я могу обойти это? Поскольку двумерный массив на самом деле является трехмерным массивом с dim(ary) = c(n,m,1)
, было бы здорово использовать один и тот же синтаксис поднабора для обоих.
Есть ли какой-то способ, которым я могу сказать R "если я добавлю слишком много запятых в индексации, вы должны предположить, что это одноэлементное измерение"?
(Полагаю, я мог бы изменить себя через dim(img) <- c(dim(img),1)
, но для этого все еще требуется, чтобы я проверил это length(dim(img))==2
, и я хотел бы знать, есть ли возможность избежать этой проверки в начале каждой функции.