2013-04-19 2 views
5

У меня есть вопрос о ссылочных классах. Мой вопрос заключается в контексте пакета R, который я разрабатываю rCharts. Он использует ссылочные классы для создания интерактивных графиков из R.Может ли быть присвоен ссылочный класс для вызовов журнала

Создание сюжета включает в себя ряд вызовов. Вот пример, где сначала создается диаграмма рассеяния, а затем добавляется строковый график.

p1 <- rPlot(mpg ~ cyl, data = mtcars, type = 'point') 
p1$layer(copy_layer = T, type = 'line') 

Теперь, поскольку ссылочный класс похож на закрытие, мне было интересно, удалось ли зарегистрировать сделанные звонки. Идея состоит в том, что если я могу зарегистрировать последовательность выполненных вызовов, то я могу автоматически вставить исходный код, используемый для создания визуализации, вместе с html.

Я пытался выяснить, могу ли я использовать sys.function или match.call, но никуда не денусь. Если кто-то может указать мне, как я могу подойти к этому, это было бы очень признательно.

+2

Решение должно быть справедливым: в каждом методе вам понадобится что-то вроде 'calls << - c (calls, list (match.call())) – hadley

+0

Спасибо, это сработало отлично! Может быть, я должен опубликовать это как другой вопрос, но каков рекомендуемый способ перепрограммировать список вызовов. – Ramnath

+2

Просто 'eval()' them - но если вы хотите это сделать, вам также понадобится захватить среду, в которой они были выполнены с помощью 'parent.frame()' – hadley

ответ

2

Как @hadley заявил:

calls <<- c(calls, list(match.call())) 

Рад, что выглядит работали. Давайте сделаем это закрытым. :)