ddply 到 ksmooth 函数
ddply to ksmooth function
我有一个包含多列的数据框。相关的三个是 chr
、pos
和 ratio
。我想根据 chr
(染色体)使用 ddply
到 ksmooth
,但不断收到包含大量 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
的含义。默认情况下,这是 NULL
,ksmooth
将使用 n.points
。这就是你所有麻烦的根源。
我有一个包含多列的数据框。相关的三个是 chr
、pos
和 ratio
。我想根据 chr
(染色体)使用 ddply
到 ksmooth
,但不断收到包含大量 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
的含义。默认情况下,这是 NULL
,ksmooth
将使用 n.points
。这就是你所有麻烦的根源。