正确地将"翻转"表读入data.frame

Mat*_*eck 5 r dataframe

我有一个制表符分隔的文件,如下所示:

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=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
Run Code Online (Sandbox Code Playgroud)