2010-12-02 14 views
5

Satır/sütun çıktı adlarını, **ply işlevinde, ldply, plyr paketinden belirtmek istiyorum. örneğinplyr'den ** kat işlevlerinin çıktı satırlarını/cols'lerini nasıl yeniden adlandırabilirim?

,

Ben data.frame dönüştürmek ve ben şimdi ne var signif()

foo <- list(var.a = runif(3), var.b = runif(3), var.c=runif(3)) 

ile önemli basamak kesmek istediğiniz, bir liste, foo var

q <- ldply(foo, signif, 2) 
colnames(dq)[1] <- c('id', 'q1', 'q2','q3') 
rownames(dq) <- dq$id 
olduğunu

Daha kolay bir yolu var mı?

İki önceki soru, plyr'i plyr kullanarak rows ve cols olarak yeniden adlandırmayı nasıl kullandığını sordu, ancak sanırım sorum farklı. İsimler başka bir işlevle aynı zamanda belirtilebilir mi (veya bunu doğru yapıyorsam)? Bu değerli bir özellik talebi mi?

cevap

6

Bir yere isim vermek zorunda ya işlevini

R> ldply(foo, function(l) c(a=signif(l[1], 2), b=signif(l[2], 2), 
+       c=signif(l[3], 2))) 
    .id a b c 
1 var.a 0.50 0.72 0.27 
2 var.b 0.82 0.38 0.24 
3 var.c 0.13 0.27 0.81 
R> 

örn olarak içeride çağrıldığını veya çağrısından sonra yaptığı etmiştir.

Sık kullandığım bir diğer seçenek, anonim çalışan işlevine tek satırlık data.frame oluşturmaktır. *dply() ve diğerleri bunu basitçe tek bir data.frame olarak derlediler. Bu benim zevklerim için yeterince iyi çalışıyor.

+0

Seçenek 2'nin bir örneğini gönderebilir misiniz? Kulağa yararlı geliyor, ama nasıl çalışacağını sezgisel olarak anlamadım. Teşekkürler. – kmm

+0

Bkz. Örneğin daha eski yanıtım: http://stackoverflow.com/questions/3277326/group-by-in-r-ddply-with-weighted-mean ve genelde, "[r] someterm" formunda arama yapmayı deneyin. StackOverflow'daki R etiketlerinde 'someterm'i aramak. Sadece 'ddply' için yaptım ve ilk iki vuruş kazananlardı. –

+0

Teşekkürler. Benzer bir cevap için SO aramayı düşünmemiştim. – kmm

İlgili konular