2013-05-10 2 views
1

Я пишу набор функций R, которые будут доступны в Интернете, общедоступны, поэтому я хотел бы сделать чистую работу здесь ... в первый раз.Пара нескольких результатов в одном объекте

В основном есть функция f, которая принимает dataframe и вычисляет пять вещественнозначные числа, называть их x1, x2, , x4 и x5. Затем можно вызвать набор других функций g1, g2, g3, которые, основываясь на этих пяти номерах, вычисляют некоторые другие вещи. Поэтому я бы хотел, чтобы эти 5 чисел были интегрированы в один объект, так сказать. Возможно, даже пусть эти функции g_i будут частью этого объекта, например, методом или ссылкой на исходные данные, которые их генерировали.

Сейчас функция f просто возвращает вектор с именем записью, но я хотел бы, чтобы быть чистыми, иметь свой собственную print функции и т.д.

Что такое лучший способ сделать это? Я думаю о чем-то подобном функции lm и объектам модели. Являются ли эти объекты R? Я никогда не делал ничего подобного в R, поэтому любой указатель будет высоко оценен.

+1

Откроется '? List', для более общего способа возврата нескольких объектов. Чтобы иметь собственную функцию печати, вам нужно добавить класс (см. '? Class') к возвращаемому значению, например' class (x) <- "myclass", и определить функцию 'print.myclass <- function (...) {do_something (...)} '. –

+1

[Этот мой ответ] (http://stackoverflow.com/questions/10938427/example-needed-change-the-default-print-method-of-an-object/10938565#10938565), к аналогичному вопросу, может помочь вам начать с этого. –

+0

О, не знал, что все было сделано со списками. Я думал, вам нужно определить классы S3/S4 и все такое. Любой указатель на печать табличных данных, как в 'summary.lm'? Если вы опубликуете ответ, я соглашусь –

ответ

0

Считаете ли вы, что ваша функция f возвращает список? Вы можете настроить его обратный бит как

return.list <- list(x1=x1.val , x2=x2.val, x3=x3.val, x4=x4.val, x5=x5.val) 
return(return.list) 

Тогда вы можете получить доступ к переменным, которые вы хотите, вызвав return.list$x1 и так далее. Это также работает для возврата более сложных вещей, таких как кадры данных, таблицы или списки списков.

+0

Что случилось с базовым print.list? Вы получаете сводку по $ var = val –

Смежные вопросы