ddply to ksmooth功能

时间:2016-07-21 01:27:33

标签: r plyr

我有一个包含多个列的数据框。相关的三个是chrposratio。我想基于ddply(染色体)使用ksmoothchr,但不断获取包含大量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))
  })

显然,我做错了什么。

感谢您的帮助, 盖

1 个答案:

答案 0 :(得分:1)

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

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

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