ddply 到 ksmooth 函数

ddply to ksmooth function

我有一个包含多列的数据框。相关的三个是 chrposratio。我想根据 chr(染色体)使用 ddplyksmooth,但不断收到包含大量 NA 值的错误数据框。这是我的可重现数据框:

d=data.frame(chr=c(rep.int(1,24),rep.int(2,15),rep.int(3,30),rep.int(4,20),rep.int(5,11)),
             pos=c(sort(sample(1:1000, size = 24, replace = FALSE),decreasing = FALSE), sort(sample(1:1000, size = 15, replace = FALSE),decreasing = FALSE), sort(sample(1:1000, size = 30, replace = FALSE),decreasing = FALSE), sort(sample(1:1000, size = 20, replace = FALSE),decreasing = FALSE), sort(sample(1:1000, size = 11, replace = FALSE),decreasing = FALSE)),
             ratio=seq(1:100))

ddply函数

f <- ddply(d, .(chr),
  function(e) { 
       as.data.frame(ksmooth(e$pos,e$ratio,"normal",bandwidth=10))
  })

显然我做错了什么。

感谢您的帮助, 盖伊

这与 plyr::ddply 无关。问题出在 ksmooth。你想要:

ksmooth(e$pos, e$ratio, "normal", bandwidth=10, x.points = e$pos)

阅读 ?ksmooth 了解 x.points 的含义。默认情况下,这是 NULLksmooth 将使用 n.points。这就是你所有麻烦的根源。