由于某种原因,我无法将自定义函数与ddply一起使用。它返回完全相同的数据框。
基本上,我不想计算id的重复次数,而是实际上创建一个变量,说明它是id重复的第一个,第二个还是第三个实例。 为此编写了一个函数,create_guide,它有效; 但不适用于 id 组。
df<-data.frame(id=c(1,1,2,2,3,4))
create_guide <- function(dt) {
guide <- rep(0,times=nrow(dt))
for (i in 1:nrow(dt)) {
guide[i] <- length(dt[1:i,1])
}
a <- cbind(guide,dt)
}
bi <- plyr::ddply(df,.(id),fun=create_guide)
发生了什么事情?谢谢
你拼错了参数名称:它是.fun
,而不是fun
。您也可以省略它:
bi <- ddply(df, .(id), .fun = create_guide)
# or
bi <- ddply(df, .(id), create_guide)
此外,你的函数可以大大简化,因为你的循环体只是分配连续数字的一种复杂方式:
create_guide = function(dt) {
cbind(guide = seq_len(nrow(dt)), dt)
}
(顺便说一下,我花了大量时间将函数简化为这一行,因为我无法理解它在做什么——这就是代码的复杂程度。