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))