2013-04-15 11 views
8

Veri çerçevesi üzerinde xyplot kullanıyorum ve (x, y, ...) argümanları olmayan verilerle bir panel işlevini beslemek istiyorum, ancak verilerin bazı ek sütunları çerçeve (örneğin aşağıdaki örnekte k):Veri çerçeve sütunlarını xyplot panel işlevlerine besleme

library(lattice) 

mydata <- data.frame(xxx = 1:20, 
        yyy = rbinom(20,20,.5), 
        uuu = gl(2,10), 
        k = rnorm(20)) 

xyplot(formula = yyy ~ xxx | uuu, data = mydata, 
     panel = function(x,y,k, ...){ 
       n <- x * k 
       panel.xyplot(n,y,...) 
       }) 

Bu çalışmaz anlamak R paneli işlevi için bu k, sütun besleme çünkü. Bunu yapmanın basit bir yolu var mı?

çok teşekkür ederiz (sadece benim gerçek panel işlevinde k tarafından x çoğalmaya çalışmıyorum. Ben ... k gerektiren başka bir fonksiyon arıyorum)!

cevap

8

Bu yararlı (ama biraz belirsiz) subscripts bağımsız değişkeni içindir. ?xyplot yılında "paneli" Tartışmanın açıklaması Gönderen:

[...] paneli işlevi resmi bir argüman olarak 'alt simgeler' olabilir. Her iki durumda da 'subscripts' argümanı, 'etkisini dikkate almadan önce orijinal' data 'içindeki o panel için' x 've' y 'verilerinin endeksidir. alt küme 'argüman. Başka bir deyişle

, "indisler" verilere karşılık gelen senin data argüman satır numaralarını içerecek adında resmi bir argüman mevcut panelde planlandığından - Eğer istenen alt kümesini seçmek gerekir sadece ne k -values. Senin durumunda

yapın:

xyplot(yyy ~ xxx | uuu, data = mydata, K = mydata$k, pch=16, 
     panel = function(x,y,K, ..., subscripts){ 
        n <- x * K[subscripts] 
        panel.xyplot(n,y,...) 
       }) 

(Not bu uygulamada bir tek komplikasyon olduğunu k nedeniyle argümanlar kısmi eşleme, key olarak yorumlanır alacak adında xyplot() An argüman önlemek için.. Bu, K numaralı argümanı isimlendirdi, böylece panel işlevine sağlam bir şekilde geçecekti.)

+0

+1! Abonelerin iyi illüstrasyon! – agstudy