在R中选择“密度”对象的特定列

时间:2015-02-09 04:41:19

标签: r

我需要从R中的密度对象中选择单独的观察结果。这与prior post有关,除了我的数据格式不同。

我从一个基因表达值矩阵“b”开始,其中列表示10个观察值,行表示1000个基因的表达水平。

b = matrix(rexp(1000),ncol=10)

接下来,我将每次观察的密度绘制成一条单独的线。

d = apply(b, 2, density, na.rm = TRUE)

plot(b, type="n", ylim=c(0,1))
for (i in 1:10) { lines( d[[i]] ) } 
abline(h=0.5)

如何挑选'b'中密度低于'b [,1] = 0.5'水平线的列?

1 个答案:

答案 0 :(得分:1)

如果要获得特定值的估计密度,可以使用approx以及密度对象中的点。例如

yv <- sapply(d, function(d) {
    approx(d$x, d$y, .5)[["y"]]
})
yv
# [1] 0.7158584 0.5516512 0.7049119 0.6180026 ...

这将预测每个密度10的x = .5的x值。要查看哪些密度低于水平线,你可以做

which(yv<.5)
# [1] 5    # (your results may differ due to the random input)

所以我们看到只有第5列符合标准。