将具有较少列的行添加到R中的数据框

时间:2014-07-10 17:27:28

标签: r dataframe rbind

假设我有一个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

感谢任何帮助。

1 个答案:

答案 0 :(得分: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.frame放入list。将list元素的名称设置为要在data.frame上方打印的内容。在这里,我使用了与原始data.frame s相同的名称:

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")
  }))
}

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

temp <- tempfile()

实际&#34;写作&#34;由capture.output完成:

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

这是我们的&#34; temp&#34;文件看起来像现在:

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]数字。