r语言 - 将自定义函数与 ddply 结合使用



由于某种原因,我无法将自定义函数与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)
}

(顺便说一下,我花了大量时间将函数简化为这一行,因为我无法理解它在做什么——这就是代码的复杂程度。

最新更新