我有一个制表符分隔的文件,如下所示:
AG-AG AG-CA AT-AA AT-AC AT-AG ...
0.0142180094786 0.009478672985781 0.0142180094786 0.4218009478672 ...
当我使用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 ...
对我来说这感觉有些尴尬,因为如果它像这样,我更习惯于处理数据:
splice.pair counts
AG.AG 0.01421801
AG.CA 0.009478673
AT.AA 0.01421801
AT.AG 0.03317536
... ...
到目前为止,我尝试将表格强制转换为这样的数据框(使用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
答案 0 :(得分:10)
您需要以下内容以您希望的方式阅读和重塑数据:
read.table
与参数header=FALSE
t()
以下是代码:
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