2016-04-18 2 views
0

Многие пакеты содержат dataframes, где plot (df) создает определенный вывод. например. nlme содержит «диализный» данных кадра, который на участке (диализатор) производит участок с использованием решетчатого кода (решетки пакета), где код фактически будет:Установить атрибуты графика по умолчанию для DataFrame

dotplot(rate ~ pressure | Subject, data="Dialyzer") 

Код для этого, как представляется, содержащимся в атрибутах dataframes : может ли кто-нибудь указать мне руководство или включить руководство по настройке графика по умолчанию для блока данных?

ответ

1

Это определяется классом объекта. Обратите внимание на класс Dialyzer «data.frame».

> class(Dialyzer) 
[1] "nfnGroupedData" "nfGroupedData" "groupedData" "data.frame" 

Когда вы вызываете сюжет, он проходит через запись этого класса и пытается найти plot.* метод. Используется первый найденный. Если все не удается, всегда есть data.frame.

> methods("plot") 
[1] plot.acf*    plot.ACF*    plot.augPred*   plot.compareFits*  plot.data.frame*  
[6] plot.decomposed.ts* plot.default   plot.dendrogram*  plot.density*   plot.ecdf    
[11] plot.factor*   plot.formula*   plot.function   plot.gls*    plot.hclust*   
[16] plot.histogram*  plot.HoltWinters*  plot.intervals.lmList* plot.isoreg*   plot.lm*    
[21] plot.lme    plot.lmList*   plot.medpolish*  plot.mlm*    plot.nffGroupedData* 
[26] plot.nfnGroupedData* plot.nls*    plot.nmGroupedData* plot.pdMat*   plot.ppr*    
[31] plot.prcomp*   plot.princomp*   plot.profile.nls*  plot.ranef.lme*  plot.ranef.lmList*  
[36] plot.raster*   plot.shingle*   plot.simulate.lme*  plot.spec*    plot.stepfun   
[41] plot.stl*    plot.table*   plot.trellis*   plot.ts    plot.tskernel*   
[46] plot.TukeyHSD*   plot.Variogram*  

Если вы хотите использовать определенный метод, вы можете вызвать его в явном виде с помощью plot.*, например, plot.default.

+0

Спасибо, Роман, проведя поиск по вашему ответу. Я нашел это: https: //github.com/cran/nlme/blob/master/R/groupedData.R где он указывает, как кадры данных сгруппированы в nlme. – Irenabyss

1

R is Полиморфный. Это означает, что одна и та же функция может приводить к различным операциям для разных классов объектов. Вы можете применить plot() ко многим различным типам объектов, вы получите другой вид сюжета для каждого из них. Мы могли бы сказать то же самое, например, для print(), summary() и многих других.

Полиморфизм облегчает запоминание. Если функция нова для вас, попробуйте запустить plot() на выходе функции; он, скорее всего, будет работать. Если вы программист, полиморфизм позволяет писать довольно общий код, не заботясь о том, какой тип объекта манипулируется, потому что основные механизмы класса позаботятся об этом. Функции, которые работают с полиморфизмом, такие как plot() и print(), известны как generic. Когда вызывается общая функция, R передает вызов методу относительного класса: он перенаправляет вызов функции, определенной для класса конкретного объекта.