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

将数据帧转换为矩阵,其中df的第1列作为矩阵的行名

班言
2023-03-14

我有一个尺寸为3695 X 20的数据框。第一列包含字母数字标识符,其他19列都是数字。因此,rownames(df)提供数字1-3695,colnames(df)提供列的名称。df[,1]提供字母数字标识符。

我希望将数据框转换为矩阵,并使用现有数据框的第1列作为新矩阵的行名称,并将数据框的列名保留为矩阵的列名。

我还想自动化这个过程,用于类似但不同维度的数据帧。因此,如果解决这个问题需要知道行数和/或列数,我如何在不看监视器的情况下将这些信息输入代码?

我已经看过数据了。矩阵和整形2,但似乎无法想出如何做我想要的。

共有1个答案

白昊东
2023-03-14

用你的样本数据

X<-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("gene", "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")

您可以编写一个简单的辅助函数来创建矩阵并设置正确的名称

matrix.please<-function(x) {
    m<-as.matrix(x[,-1])
    rownames(m)<-x[,1]
    m
}

你会像这样使用它

M <- matrix.please(X)
str(M)
#  num [1:4, 1:3] 0 0 0 0 0 0 -1.14 0 0 0 ...
#  - attr(*, "dimnames")=List of 2
#   ..$ : chr [1:4] "AT1G01040" "AT1G01270" "AT1G01471" "AT1G01680"
#   ..$ : chr [1:3] "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"

因此,我们有一个4x3矩阵,具有正确的行和列名称。

 类似资料:
  • 我在R中有两个数据帧,我想把它们转换成矩阵。这是我手上的示例数据 一个data.frame有2列,一列有名称,第二列有一些分数。 其他数据帧为一列,包含上述数据帧的的半名称。 我想要结果矩阵/数据。框架类似于下面的内容。我要切掉第一个数据。框架的第一列包含第二个数据。框架的列,并创建一个如下所示的矩阵。 任何帮助都将不胜感激。任何或解决方案都可以工作。 非常感谢。

  • 我目前正在尝试实现一个分配的压缩算法(帧预测)。我不是在寻找缩略图文件,甚至只是一个shell命令来为我生成一些东西。我的问题是具体地将它与一个golang程序集成。 我刚开始就已经卡住了。我应该从视频中提取每一帧,将其分为I、P和B帧,并执行帧间编码(压缩帧本身),然后执行帧内编码(在帧之间)。 现在我甚至不能开始上面的问题,因为我不知道如何阅读视频作为我可以在代码中使用的东西。显然,我能想到的

  • 问题内容: 我正在自学一些Java,并且坚持创建2D数组,该数组使用随机值对其进行初始化,然后创建该数组的转置。 示例输出为: 原始矩阵 转置矩阵 ^应该是最终输出。代码的一些帮助将不胜感激! 如果行或列的数量超出指定范围,我想编写代码以生成错误消息。以及是否从命令行读取矩阵元素而不是随机生成它们。 问题答案: 这是返回转置矩阵的int [] []的简单方法… 比起打印二维矩阵,您可以使用如下方法

  • 我有一个编码器BCH的输出矩阵(3,63),但这个矩阵是伽罗瓦域,我需要将这个伽罗瓦域转换为矩阵二进制,因为matlab将伽罗瓦域中的元素视为字符串,我需要将这些值视为二进制数。 我需要将代码列与000010进行比较,。。。对于开关情况或if,但代码矩阵行是伽罗瓦场格式。我的问题是,遵循matlab错误是开关表达式必须是标量或字符向量。

  • 我正在尝试将时间序列对象转换为矩阵。 此代码生成错误如下: 但是 出生时间序列 <代码>数据。矩阵(birthstimeseries)。它生成一维数据。如何将此数据帧的行数和列数保留到矩阵中。 我想要这样的结果作为一个矩阵。

  • 我有一个带有空间坐标和一个变量的矩阵数据。空间分辨率为1000米。 我想将其转换为光栅格式。 我使用下面的代码来完成它。但我得到的决心与我得到的不一样。有没有更好的方法可以用我的真实数据获得相同的分辨率?