R 变量名中的折叠加倍

R 变量名中的折叠加倍,r,R,我有一个基因名称矩阵,在不同的组织中有表达值。然而,这些分析是独立进行的,并非所有的基因都存在于所有的组织中。每个组织的基因列表只是简单地贴在彼此的下面。现在看起来是这样的: GeneName Tissue A Tissue B Gene A 1------------ Gene B 1------------ Gene C 2----------- Gene A ---------3 Gene D ----------2 我想折叠基因名称倍数,得到如下矩阵: GeneName

我有一个基因名称矩阵,在不同的组织中有表达值。然而,这些分析是独立进行的,并非所有的基因都存在于所有的组织中。每个组织的基因列表只是简单地贴在彼此的下面。现在看起来是这样的:

 GeneName   Tissue A Tissue B
Gene A  1------------
Gene B  1------------
Gene C  2-----------
Gene A ---------3
Gene D ----------2
我想折叠基因名称倍数,得到如下矩阵:

GeneName   Tissue A Tissue B
Gene A 1---------3
Gene B 1---------
Gene C 2----------
Gene D ---------2

编辑:谢谢你的回答。然而,我没有补充基因名称是它们自己的一列,而行名称只是数字1-n。我尝试将name列设置为row name
row.names(mydataframe)假设缺少的值是'NA',而'Gene D'输出中的'tissure.B'值是2,您可以使用

 res <- rowsum(m1, row.names(m1), na.rm=TRUE)
 is.na(res) <- res==0
 res
 #       Tissue.A Tissue.B
 #Gene A        1        3
 #Gene B        1       NA
 #Gene C        2       NA
 #Gene D       NA        2
我们可以像以前一样,将
0
替换为
NA

或者使用
base R中的
aggregate

  aggregate(.~GeneName, df1, sum, na.rm=TRUE, na.action=NULL)
数据
m1您是否有丢失插槽的NA值在终端或Rstudio中看到问题中的矩阵/数据帧时,最好显示它们。为什么
Gene D
在输出中变为3?@RuthgerRighart我认为这是一个打字错误。关于警告消息,“data.frame”不能有重复的行名称。您需要将其转换为矩阵(尽管您最初的描述将其称为矩阵)
  aggregate(.~GeneName, df1, sum, na.rm=TRUE, na.action=NULL)
 m1 <- structure(c(1L, 1L, 2L, NA, NA, NA, NA, NA, 3L, 2L), .Dim = c(5L, 
 2L), .Dimnames = list(c("Gene A", "Gene B", "Gene C", "Gene A", 
"Gene D"), c("Tissue.A", "Tissue.B")))

 df1 <- structure(list(GeneName = c("Gene A", "Gene B", "Gene C",
  "Gene A", 
 "Gene D"), Tissue.A = c(1L, 1L, 2L, NA, NA), Tissue.B = c(NA, 
 NA, NA, 3L, 2L)), .Names = c("GeneName", "Tissue.A", "Tissue.B"
 ), class = "data.frame", row.names = c(NA, -5L))