【问题标题】:past values from a data frame to column names of a matrix (in R)从数据框到矩阵列名的过去值(在 R 中)
【发布时间】:2021-03-05 14:55:16
【问题描述】:

我有一个数据框,其中行名中的单元格 ID 和列 x 中的分类。

         x
ACCTTAC  do
ACCGTGG  si
AGTCGGG  si

我还有一个矩阵,列中包含细胞 ID,行中包含基因。

      ACCTTAC ACCGTGG AGTCGGG
Gene1 4       5       1
Gene2 3       1       0
Gene3 3       3       1

我想粘贴来自数据框的矩阵分类的列名,请参见下面的示例。

       do_ACCTTAC si_ACCGTGG si_AGTCGGG
Gene1  4          5       1
Gene2  3          1       0
Gene3  3          3       1
dput(df) 
structure(list(x = c("do", "si", "si"), row.names = c("ACCTTAC", "ACCGTGG", "AGTCGGG"), class = "data.frame")) 
mat = matrix(c(8,4,5,6,7,9,1,8,9),nrow = 3, ncol = 3,byrow = TRUE) 
mat <- matrix(1:9, nrow = 3,dimnames = list(c("Gene1","Gene2","Gene3"), c("ACCTTAC","ACCGTGG","AGTCGGG"))) 

【问题讨论】:

  • 拜托,您能粘贴创建数据框和矩阵的公式吗? dataframe &lt;- data.frame(...,这样我们可以更好地帮助您。
  • dput(df) 结构(list(x = c("do", "si", "si"), row.names = c("ACCTTAC", "ACCGTGG", "AGTCGGG" ), class= "data.frame"))
  • mat = matrix(c(8,4,5,6,7,9,1,8,9),nrow = 3, ncol = 3,byrow = TRUE) mat
  • 请在您的问题中发布代码
  • 完成。我将代码添加到问题中。

标签: r dataframe matrix paste


【解决方案1】:

根据您的数据代码使用列名和行名:

dataframe <- data.frame(x = c("do", "si", "si"), 
                        row.names = c("ACCTTAC", "ACCGTGG", "AGTCGGG")) 
mat <- matrix(c(8,4,5,6,7,9,1,8,9),nrow = 3, ncol = 3,byrow = TRUE) 
mat <- matrix(1:9, nrow = 3,dimnames = list(c("Gene1","Gene2","Gene3"),
 c("ACCTTAC","ACCGTGG","AGTCGGG")))

dataframe$col_names <- row.names(dataframe)
for(i in 1:ncol(mat)) {
  for(j in 1:nrow(dataframe)) {
    if(row.names(dataframe)[j] == colnames(mat)[i])
      colnames(mat)[i] = paste0(dataframe$x[j],"_",dataframe$col_names[j])
  }
}

结果是:

> mat
      do_ACCTTAC si_ACCGTGG si_AGTCGGG
Gene1          1          4          7
Gene2          2          5          8
Gene3          3          6          9

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-29
    • 2015-07-20
    • 1970-01-01
    • 2015-03-27
    • 2015-06-02
    • 1970-01-01
    相关资源
    最近更新 更多