1

假设我有一个 10x10 的数据框,我想在开头添加一行,只有一个值(即,新行只有一列)。此外,我希望这一行位于列名之上,因此我需要将列名转换为数据框中的实际条目。如果不添加 NA,我将如何做到这一点?

这是我所拥有的示例(nrow=3、列标题和 ncol=5 的数据框):

Name Description Sample1 Sample2 Sample3
2345 gene        1.123   1.532   2.464
3253 gene        2.313   1.531   1.424
2453 gene        1.164   1.597   1.943

这就是我想要的(一个数据框/某种对象,nrow=5 和 ncol=5,但第一行中的值为 NULL):

#1.2
Name Description Sample1 Sample2 Sample3
2345 gene        1.123   1.532   2.464
3253 gene        2.313   1.531   1.424
2453 gene        1.164   1.597   1.943

任何帮助表示赞赏。

4

1 回答 1

0

基于我的评论,我会尝试以下方法作为一种可能的方法:

首先,一些示例数据:

set.seed(1)
A <- data.frame(matrix(rnorm(10), ncol = 5))
B <- data.frame(matrix(rnorm(10), ncol = 5))
C <- data.frame(matrix(rnorm(10), ncol = 5))

首先,按照建议,将data.frames 放入 a 中list。将list元素的名称设置为您希望在data.frame. 在这里,我只是使用了与原始data.frames 相同的名称:

myList <- list(A = A, B = B, C = C)

其次,创建一个自定义print函数,该函数具有一条cat线并print.data.frame具有您需要的任何其他设置(如row.names = FALSE)。

print.myList <- function(x, ...) {
  invisible(lapply(names(x), function(y) {
    cat("#:", y, "\n")
    print.data.frame(x[[y]], row.names = FALSE)
    cat("\n")
  }))
}

出于演示目的,我将写入 a tempfile(),但您实际上会将其写入计算机上某处的文本文件。

temp <- tempfile()

实际的“写作”由以下人员完成capture.output

capture.output(print.myList(myList), file = temp)

这是我们的“临时”文件现在的样子:

readLines(temp)
#  [1] "#: A "                                                   
#  [2] "         X1         X2         X3        X4         X5"  
#  [3] " -0.6264538 -0.8356286  0.3295078 0.4874291  0.5757814"  
#  [4] "  0.1836433  1.5952808 -0.8204684 0.7383247 -0.3053884" 
#  [5] ""                                                        
#  [6] "#: B "                                                   
#  [7] "        X1         X2          X3          X4        X5" 
#  [8] " 1.5117812 -0.6212406  1.12493092 -0.01619026 0.8212212" 
#  [9] " 0.3898432 -2.2146999 -0.04493361  0.94383621 0.5939013" 
# [10] ""                                                        
# [11] "#: C "                                                   
# [12] "        X1          X2          X3         X4         X5"
# [13] " 0.9189774  0.07456498  0.61982575 -0.1557955 -0.4781501"
# [14] " 0.7821363 -1.98935170 -0.05612874 -1.4707524  0.4179416"

注意:当然,如果您在文本编辑器中打开生成的文件,您将看不到[1]此处显示的数字。

于 2014-07-10T17:51:15.637 回答