Я пытаюсь перегрузить оператор индекса ("["
) для собственного класса, который я создал. Я пытаюсь выяснить, как справиться со следующими проблемами.
- Как узнать, находится ли оператор слева или справа? то есть
a[x] = foo
противfoo = a[x]
- При подписке всего измерения, такого как
foo = a[,x]
, как я могу определить первый параметр? - При использовании a[seq(x,y)] кажется, что вся последовательность расширяется. Есть ли простой способ получить первое, шаговое и последнее значения без расширения?
EDIT: Мой первый вопрос получил несколько ответов. В процессе я нашел ответ на второй. Вы можете использовать функцию «отсутствует», чтобы выяснить, какие параметры присутствуют.
Вот пример кода:
setMethod("[", signature(x="myClass"),
function(x, i, j, k, l) {
if (missing(i)) { i = 0 }
if (missing(j)) { j = 0 }
if (missing(k)) { k = 0 }
if (missing(l)) { l = 0 }
})
Я принял ответ на этот вопрос, поскольку пункт номер 3 является для меня наименее приоритетным.
a[seq(x, y)]
иv = seq(x, y); a[v]
будет другим) - person David Robinson   schedule 14.03.2014parsing the expression
? - person Pavan Yalamanchili   schedule 14.03.2014