R:将数据框列与实际列对齐

时间:2014-03-28 15:57:39

标签: r

我有以下数据框

Loci      p-value             chromosome    start     end        geneDescription
A         2.046584849E-2      1             98542     98699      tyrosine kinase
B         5.67849483E-20      2             8958437   8958437    endocytosis
...

但是,当我想用​​以下代码打印数据框时:

write.table(table,"~/Desktop/genes.txt", sep = "\t", row.names = FALSE, col.names = TRUE, quote = FALSE, append = FALSE)

我得到以下内容:

 Loci      p-value chromosome    start     end   geneDescription
 A         2.046584849E-20       1         98542    98699          tyrosine kinase
 B         5.67849483E-20        2         8958437  8958437        endocytosis

我知道它与" \ t"有关,但是在打印时R可以自动调整列的宽度以获得上面的原始数据框吗?

谢谢。

2 个答案:

答案 0 :(得分:0)

不,因为这是标签格式问题,可以通过增加编辑器的tabwidth来部分解决。尝试规范化列名的长度。

max.name <- max(sapply(colnames(table), nchar))
colnames(table) <- sapply(colnames(table), function(name) paste0(c(name, rep(" ", max.name - nchar(name))), collapse = ''))

答案 1 :(得分:0)

也许您只是在寻找capture.outputsink

在以下示例中,将x替换为实际文件名。这只是为了说明目的。

x <- tempfile()
capture.output(mydf, file=x)
readLines(x)
# [1] "  Loci      p.value chromosome   start     end geneDescription"
# [2] "1    A 2.046585e-02          1   98542   98699  tyrosinekinase"
# [3] "2    B 5.678495e-20          2 8958437 8958437     endocytosis"

x <- tempfile()
sink(file = x)
mydf
sink()
readLines(x)
# [1] "  Loci      p.value chromosome   start     end geneDescription"
# [2] "1    A 2.046585e-02          1   98542   98699  tyrosinekinase"
# [3] "2    B 5.678495e-20          2 8958437 8958437     endocytosis"

readLines步骤只是为了向您显示写入“文件”的内容。