2010-12-02 58 views
5

我想從plyr包中說明**ply函數ldply中的行/列輸出名稱。如何從plyr重命名** ply函數的輸出行/列?

例如,

我有一個列表,foo,我想轉換爲data.frame並截斷顯著數字與signif()

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

我現在有什麼是

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

有沒有更簡單的方法?

兩個先前的問題已經問過如何使用plyr重命名rowscols使用plyr,但我認爲我的問題是不同的。名稱可以與另一個函數同時聲明(或者如果我正確地做到這一點)?這是一個有價值的功能要求嗎?

回答

6

你必須從某個地方給的名字,無論是在被調用的函數裏面,例如如

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> 

或有你的電話後做了。

我經常使用的另一個選項是在匿名工作者函數中明確創建一行data.frame。然後*dply()等人簡單地將它們整理成單個data.frame。這對我的口味來說足夠好。

+0

你介意發表一個你的選擇2的例子嗎?這聽起來很有用,但我並不直觀地理解它是如何工作的。謝謝。 – kmm 2010-12-02 18:53:49