我有一个包含多个列的数据框。相关的三个是chr
,pos
和ratio
。我想基于ddply
(染色体)使用ksmooth
到chr
,但不断获取包含大量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))
})
显然,我做错了什么。
感谢您的帮助, 盖
答案 0 :(得分:1)
这与plyr::ddply
无关。问题出在ksmooth
上。你想要:
ksmooth(e$pos, e$ratio, "normal", bandwidth=10, x.points = e$pos)
阅读?ksmooth
了解x.points
的含义。默认情况下,这是NULL
,ksmooth
将使用n.points
。这是你所有麻烦的根源。