假设我有一个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
感谢任何帮助。
答案 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]
数字。