【发布时间】:2014-10-30 22:00:34
【问题描述】:
我有一个尺寸为 3695 X 20 的数据框。第一列包含字母数字标识符,其他 19 列都是数字。因此,rownames(df) 提供了数字 1-3695,而 colnames(df) 提供了列的名称。 df[,1] 提供字母数字标识符。
我想将数据框转换为矩阵,并使用现有数据框的第 1 列作为新矩阵的行名,并将数据框的列名保持为矩阵的列名。
我还希望将此过程自动化,以用于类似但不同维度的数据框。因此,如果解决此问题需要知道行数和/或列数,我怎样才能将这些信息放入代码中而无需查看监视器?
我查看了 data.matrix 和 reshape2,但似乎无法弄清楚如何做我想做的事。
【问题讨论】:
-
等你说第一列包含标识符,还有
rownames(df)标识符。没有相同的东西。rownames()不存储为列,它们存储为属性。那么你的数据是怎么回事?您是否只是复制了信息。你真的应该添加一个reproducible example 来明确你的输入是什么以及你想要的输出是什么。如果这是唯一的问题,您可以使用dim()、nrow()或ncol()来获取 data.frame 的尺寸。 -
对不起,我错了,rownames(df) 只是一个数字列表; 1-3695.
-
如果你的问题有错误,你应该编辑它。同样,如果没有可重复的示例来回答并不有趣,因为我们最终会浪费大量时间来创建一个示例,而我们的示例可能会或可能不会真正匹配您的数据。见how to ask a good question。
-
为简单起见,这里是我的较大数据框的 4 X 4 更简单的版本: structure(list(gene = c("AT1G01040", "AT1G01270", "AT1G01471", "AT1G01680") , log2.fold_change._Mer7_2.1_Mer7_2.2 = c(0, 0, 0, 0), log2.fold_change._Mer7_1.2_W29_S226A_1 = c(0, 0, -1.14, 0), log2.fold_change._Mer7_1.2_W29_1 = c(0, 0, 0, 0)), .Names = c("基因", "log2.fold_change._Mer7_2.1_Mer7_2.2", "log2.fold_change._Mer7_1.2_W29_S226A_1", "log2.fold_change._Mer7_1。 2_W29_1"), row.names = c(NA, 4L), class= "data.frame")