我有一个数据框和一个信息文件(也是表格格式),用于描述数据框中的数据。需要根据info文件中的信息重新标记数据帧的行名称。问题是信息文件中与数据框行名相对应的信息包含许多重复值。因此,有必要将df转换为矩阵,以使行名称可以具有重复值。
matrix1<-as.matrix(df)
ptr<-match(rownames(matrix1), info_file$Array_Address_Id)
rownames(matrix1)<-info_file$ILMN_Gene[ptr]
matrix1<-matrix1[!duplicated(rownames(E.rna_conditions_cleaned)), ]
以上是我自己的代码,但朋友给了我一些类似目标但结果不同的代码:
u.genes <- unique(info_file$ILMN_Gene)
ptr.u.genes <- match( u.genes, info_file$ILMN_Gene )
matrix2 <- as.matrix(df[ptr.u.genes,])
rownames(matrix2) <- u.genes
问题在于这两种策略会产生不同的结果:
> dim(matrix1)
[1] 30783 565
> dim(matrix2[,ptr.use])
[1] 34694 565
见上文矩阵2比另一行多4000行。 正如您所看到的,下面输出的行名称确实是唯一的,但这并不能说明为什么两种方法选择了不同的行,但哪种方法更好,为什么输出不同?
U.95 JIA.65 DV.93 KD.76 HC.54 KD.77
7A5 5.136470 5.657738 5.122299 5.195540 5.378040 4.997210
A1BG 6.166210 6.210373 6.382051 6.494048 5.888900 5.914070
A1CF 5.222130 4.940529 4.715292 5.182658 4.510937 5.060749
A26C3 5.410403 5.148601 5.122299 3.967419 4.780758 4.868472
A2BP1 5.725115 4.817920 5.483607 5.444427 5.503358 5.121951
A2LD1 6.505271 6.558276 5.494096 4.833267 6.988192 6.082662
我需要知道这一点,因为我想通过使行值最佳来获得最准确的下游分析的行值。