【发布时间】:2019-04-18 10:42:04
【问题描述】:
我需要有关直方图的帮助。我对 R 很陌生,所以我有点迷茫,尽管可能有一种非常简单的方法可以解决这个问题。 我需要编写一个函数,该函数返回使用数据帧的一行中的数据创建的两个直方图。直方图应该出现在同一个图上,一个在另一个之上。 第一个直方图应由第 1 行的 5:39 列和 40:74 列的第二个组成。 我不断得到一个全黑的情节,或者错误“x必须是数字”。
这是数据框的一部分,74的第一列
gene_id gene_symbol Chr Biotype L001P L003P L004P
1 ENSG00000000003 TSPAN6 X protein_coding 3.18003e+01 6.73098e+01 6.30330e+01
2 ENSG00000000005 TNMD X protein_coding 3.72353e-02 2.28841e+00 3.29320e-02
3 ENSG00000000419 DPM1 20 protein_coding 1.75575e+01 4.37474e+01 2.10119e+01
4 ENSG00000000457 SCYL3 1 protein_coding 2.68196e+00 3.70790e+00 3.14505e+00
5 ENSG00000000460 C1orf112 1 protein_coding 5.32179e-01 2.46598e+00 1.11985e+00
这是我到目前为止所做的:
> data <- read.table("file", header=TRUE, stringsAsFactors = FALSE)
data1 = data[1, 5:39]
这给了我一个包含 5 到 39 列的向量,包括标题。但是,当我尝试绘制第一个直方图时,通过这样做,我得到了一个全黑图
hist(table(data1),
main="Expression levels for TSPAN6 in non-tumor tissue",
xlab="Patient",
ylab="Expression level value",
border = "black",
col = "black")
另外,一旦我弄清楚如何绘制它们,我应该如何组合这两个直方图?可以使用
par(mfcol=c(1,2))
在>返回函数内部之后?
提前谢谢你!
【问题讨论】:
-
您需要指定要绘制的数据框的哪一列。我对这个问题有点困惑,你通常会在 R 中绘制列,而不是行。你能提供一个你所期望的例子吗?
-
这就是我应该做的:“编写一个名为 histogramX 的函数,它会生成两个直方图(排列在两行),其中包含单个基因的表达水平。该函数将数据作为输入, 肿瘤列的索引, 非肿瘤列的索引和要绘制的基因。"现在,非肿瘤列是 5:39 列,每一列代表一个患者的表达水平,每一行代表一个不同的基因。我也很困惑,因为我不完全理解我应该如何隔离 5:39 列的第一行并将这些值视为一列。