我试图为来自tsv文件的不同长度的列生成不同的箱图。
输入格式:
exons_1 exons_2 exons_3
0 2 2
1 1 2
2 3 1
0 0
2 2
1
4
然后,我的脚本是:
input_file = read.table(input.tsv, header=TRUE, fill=TRUE)
boxplot((input_file), ylab="Signal", xlab="Exon-Sets", las=2, names = c("exons_1", "exons_2", "exonset_3"))
我获得的输出箱图仅限于第2行(最短列),而忽略第二行之后的值。
如果我将脚本更改为fill = FALSE
,我会收到如下消息错误:
Error in scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings, :
line 4 did not have 3 elements
Calls: read.table -> scan
Execution halted
任何人都可以帮我绘制不同箱图上所有列的所有值吗?
答案 0 :(得分:1)
也许您可以在读取数据后重新整形数据,以便一列保存信号的记录值,另一列保存它所属的外显子组。然后,你可以很容易地绘制它。
library(tidyr)
library(ggplot2)
read.table(text = "exons_1 exons_2 exons_3
0 2 2
1 1 2
2 3 1
0 0
2 2
1
4", fill = T, header = T) %>%
gather(exon_set, signal) %>%
drop_na() %>%
ggplot(aes(exon_set, signal)) +
geom_boxplot()