如何子集注释元以匹配数据框子集

时间:2019-04-03 10:49:37

标签: r dataframe annotations metadata pheatmap

我需要弄清楚如何对元数据excell文件进行子集化,以使其与主数据集(DF)的子集匹配。该子设置将根据多个变量(现在为一到三个)执行。为此,我打算提供在pheatmap函数中输入所需的数据框,使其更加完整并包含图例。

到目前为止,我已将meta文件转置为将单元格ID放在一行上,以便可以将它们分配为列ID。

meta <- 
readxl::read_xlsx("C:/Users/user/Desktop/datasetfolder/file.xlsx")

``revmeta <- t(meta) 
colnames(revmeta) <- c(revmeta[rownames(revmeta)=="cell",])``

cell行包含我需要的单元格ID。这样,它们就变成了colnames,随后我在其上应用grep函数根据我希望用meta绘制的相同ID尝试对pheatmap进行子集化。然后,我根据这些ID建立一个数据框,该数据框是在annotation_col

中输入的pheatmap自变量
revmetadf <- as.data.frame(revmeta)

在上一步之后,我尝试使用grep函数对感兴趣的特定小区ID进行数据子集化。

meta1 <- revmetadf[,grep("ID1", colnames(revbigmetadf))]
bigmeta4$ID <- 1:nrow(meta1)

meta2 <- revbigmetadf[,grep("ID2", colnames(revbigmetadf))]
meta2$ID <- 1:nrow(meta2)

meta3 <- revbigmetadf[,grep("ID3", colnames(revbigmetadf))]
meta3$ID <- 1:nrow(meta3)

meta4 <- revmetadf[,grep("ID4", colnames(revbigmetadf))]
meta4$ID <- 1:nrow(meta4)

meta5 <- revmetadf[, grep("ID5", colnames(revbigmetadf))]
meta5$ID <- 1:nrow(meta5)

然后,我打算使用dplyr full_join行中的package because i want to combine several subsets with the same小头. Also i still need the cell IDs column to become a row again with the rownames_to_column function元名称。

to assign the cell IDs to the

具有95行和12列的尺寸

meta12 <- full_join(meta1,bigmeta1, by = "ID")
  metatib12 <- tibble::column_to_rownames(meta12, var = "ID")
  rownames(metatib12) <- c(rownames(revmeta))
  tmeta12 <- as.data.frame(t(bgmetatib12))

然后我根据这些ID构建一个数据帧,该数据帧是要在dim(tmeta12) [1] 95 12 中输入的annotation_col参数

pheatmap

具有95行3列的尺寸

annotation_col = data.frame(
  Cell_type= tmeta12$celltype,
  Age= tmeta12$age,
  Sex=tmeta12$sex)

在下面的步骤中,我得到一个dim(annotation_col) [1] 95 3 ,其中得到了输出:

error

'gpar'元素'fill'的长度不能为0

Error in check.length("fill") : 

我需要一些反馈和意见,以便可以解决此问题。我将在仍在学习如何应用library(pheatmap) library(RColorBrewer) pheatmap(metatib, color=rev(brewer.pal(9,"RdBu")), cutree_rows = 2, cutree_cols = 2, annotation_col = annotation_col , main = "5 + 8 weeks") 函数的情况下更新问题,请问有人可以帮忙吗?

0 个答案:

没有答案