【发布时间】:2013-12-05 02:43:28
【问题描述】:
我有一个由两列组成的数据框:true.de.status 和 decision.de。数据集可重现如下:
dat = structure(c(0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0,
0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1,
0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0,
0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1,
0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0), .Dim = c(100L,
2L), .Dimnames = list(NULL, c("true.de.status", "decision.de"
)))
dat 的前几行是:
true.de.status decision.de
[1,] 0 0
[2,] 0 0
[3,] 1 1
[4,] 0 1
[5,] 1 0
[6,] 0 0
[7,] 1 1
[8,] 1 0
现在我希望用 x 轴绘制基因数(即dat 中的总行数)和 y 轴真实阳性数的图。 x 轴很容易确定:seq(0,100) 会给我 0、1、...、100 个基因。对于 y 轴,我需要根据 true.de.status 和 decision.de 这两列进行计算:当我遍历每一行时,我可以随着基因(行)数量的增加计算真正的阳性。例如,
first 1 gene included: True positive (TP) = 0
first 2 genes included: TP = 0
first 3 genes included: TP = 1 (since both columns have 1 and they match)
first 4 genes included: TP = 1 (`decision.de` is 1, but `true.de.status` is 0, so it is a false positive)
first 5 genes included: TP = 1 (two columns don't match)
......
有没有一种简单的方法来操作dat 数据框,并返回一个与dim(dat)[1] 长度相同的向量以及真阳性的数量?谢谢!
【问题讨论】:
-
我们很清楚,这不是一个数据框,而是一个矩阵。这就是为什么我需要使用“[”而不是“$”来访问它的列。
标签: r