出于某种原因,我无法使用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)
发生了什么事? 谢谢
答案 0 :(得分:1)
你错误拼写了参数名称:它是.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)
}
(顺便说一句,我花了大量时间将功能简化到这一行,因为我无法理解它在做什么 - 这就是代码的复杂程度。)