我有一个制表符分隔的文件,如下所示:
AG-AG AG-CA AT-AA AT-AC AT-AG ...
0.0142180094786 0.009478672985781 0.0142180094786 0.4218009478672 ...
Run Code Online (Sandbox Code Playgroud)
当我使用read.table将其读入R时,我得到:
nc.tab <- read.table("./percent_splice_pair.tab", sep="\t", header=TRUE)
AG.AG AG.CA AT.AA AT.AC AT.AG ...
1 0.01421801 0.009478673 0.01421801 0.4218009 0.03317536 ...
Run Code Online (Sandbox Code Playgroud)
这对我来说有点尴尬,因为我更习惯于处理数据,如果它像这样:
splice.pair counts
AG.AG 0.01421801
AG.CA 0.009478673
AT.AA 0.01421801
AT.AG 0.03317536
... ...
Run Code Online (Sandbox Code Playgroud)
到目前为止,我尝试将表格强制转换为这样的数据框(使用data.frame())会导致非常奇怪的结果.我无法弄清楚如何获取表格的每一行作为一个简单的列表,然后我可以将其用作数据框的列.colnames(nc.tab)适用于标题,但nc.tab[1,]只需再次给我表+标题.我错过了一些明显的东西吗
- 编辑 -
虽然@Andrie的答案给了我所需的数据框架,但我还是需要做一些额外的工作来将计数值强制成数值,这样它们才能在ggplot中正常工作:
nc.tab <- read.table("./percent_splice_pair.tab", header=FALSE, sep="\t")
nc.mat <- t(as.matrix(nc.tab))
sp <- as.character(nc.tab[,2])
c <- as.numeric(as.character(nc.tab[,2]))
nc.dat <- data.frame(Splice.Pair=sp, count=c)
Splice.Pair count
1 AG-AG 0.014218009
2 AG-CA 0.009478673
3 AT-AA 0.014218009
4 AT-AC 0.421800948
5 AT-AG 0.033175355
Run Code Online (Sandbox Code Playgroud)
And*_*rie 10
您需要以下内容以您希望的方式阅读和重塑您的数据:
read.table与参数header=FALSEt()这是代码:
x <- read.table(..., header=FALSE)
df <- as.data.frame(t(x))
names(df) <- c("splice.pair", "counts")
df
splice.pair counts
V1 AG-AG 0.0142180094786
V2 AG-CA 0.009478672985781
V3 AT-AA 0.0142180094786
V4 AT-AC 0.4218009478672
Run Code Online (Sandbox Code Playgroud)