我正在使用ddply
拆分數據幀並將塊發送到函數。在ddply
行之前,我設置了i=1
。然後在函數內部我遞增i
,以便每個數據塊都有一個新的數字。但是,當我運行此功能時,每次調用該功能時,i
都將被重置爲1。我認爲這是因爲外部功能i
正在重新分配,每次ddply
發送一個新的數據塊。有沒有一種方法可以在函數外進行遞增並將數字與數據一起發送?R - ddply並遞增計數器
編輯:: 這裏是主叫用戶線:
rseDF <- ddply(rseDF, .(TestCompound), .fun = setTheSet)
下面是函數:
##Set The Set Column
setTheSet <- function(df) {
if (df[,"TestCompound"] == "DNS000000001") df[,"Set"] <- "Control"
else {df[,"Set"] <- i
i <<- i+1}
return(df)
}
這聽起來有些奇怪的事情做'ddply' 。也許如果你擴展一點你的用例並提供一個最小的例子,我們可以建議替代設計模式。 (這聽起來像你真的忙於循環,在這種情況下'ldply'可能更合適?) – Andrie
謝謝安德烈。我實際上沒有使用循環。使用'ddply'的全部原因是爲了消除for循環。該函數只是創建一個列,併爲所有成員放入「i」。據我所知,這是ddply()製作的「Split-Apply-Combine」策略。 – James