gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 05:49:35 28 4
gpt4 key购买 nike

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

我想将数据帧转换为矩阵,并使用现有数据帧的第1列作为新矩阵的行名,并保持数据帧的列名作为矩阵的列名。

我还想自动化此过程,以用于相似但不同尺寸的数据框。因此,如果要解决此问题需要知道行和/或列的数量,那么如何在无需查看监视器的情况下将这些信息放入代码中?

我看过data.matrix和reshape2,但似乎无法弄清楚该怎么做。

最佳答案

与您的样本数据

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 - 将数据帧转换为矩阵,其中df的第1列作为矩阵的行名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25694515/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com