代码之家  ›  专栏  ›  技术社区  ›  hmg

将列数较少的行添加到R中的数据帧

  •  1
  • hmg  · 技术社区  · 10 年前

    假设我有一个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 回复  |  直到 10 年前
        1
  •  0
  •   A5C1D2H2I1M1N2O1R2T1    10 年前

    根据我的评论,我将尝试以下方法作为可能的方法:

    首先,一些示例数据:

    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 s在a list 。设置 列表 元素是您想要打印在 数据帧 。这里,我只是用了和原来一样的名字 数据帧 秒:

    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()
    

    实际的“写作”是由 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] 此处显示的数字。