当前位置: 首页 > 知识库问答 >
问题:

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

方飞白
2023-03-14

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

下面是我所拥有的一个示例(nrow=3,列标题和nol=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,nol=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个答案

于正志
2023-03-14

基于我的意见,我将尝试以下方法作为一种可能的方法:

首先,一些样本数据:

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元素的名称设置为您希望打印在data.frame上面的内容。在这里,我只是使用了与原始data.frame相同的名称:

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

其次,创建一个自定义print函数,该函数具有cat行和print。数据使用所需的任何附加设置(如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]数字。

 类似资料:
  • 问题内容: 我试图基于一个的数据创建“ n” 。我正在检查in的Integer值,并循环执行sql语句以创建与列中一样多的“ n” 。 这是我的代码: 我需要创建“ n”,但我不知道如何在循环之前声明类型并在for内填充。 现有数据类型: 新的数据类型: 问题答案: 您可以创建一个可变列表并填充它: 但是更好的方法(不使用可变数据结构)是将整数列表 映射 到DataFrames列表中:

  • 我有一个来自excel电子表格的数据框,其中我找到了每个域出现的频率。我想添加域频率计数到它的相应域。 下面是查找频率并尝试将其添加到相应域的代码。 当我从数据帧打印出频率时:

  • 我有一个如下的数据帧: 我想将其转换为如下内容: B中重复的值是列名称,其值在C列中。我希望它们是数据帧的列 事实上,数据集是通过展平一棵树创建的,其中有更多的列,每个列都是一个内部节点。第一列是根,C是叶 以下是我的一些尝试: 然而,它不起作用。

  • 很容易将列表列表转换为数据帧: 但是我如何将df转换回列表列表呢?

  • 向pandas对象添加空列的最简单方法是什么?我偶然发现的最好的东西是 有没有一种不那么反常的方法?

  • 假设我有一个数据框 和列名称列表 如何将新列添加到以零为值的数据帧中?