我有一个文本文件,其中有一个名为ID的列,该列的值为A B C
variant_id gene tss_distance ma_samples ma_count ID
1 chr1 ENSG 80 68 78 A
2 chr1 ENSG 80 395 486 B
3 chr1 ENSG 80 167 183 C
我有一个正方形矩阵,所以有5000 x 5000。行名称=列名称。(我的矩阵列和行名称匹配)。行名称和列名称还匹配 Dataframe ID列中的一些ID。矩阵可能包含 Dataframe 中未找到的额外ID。
[A][B][C][D]
[A] value1 value2 value3 value4
[B] value5 value6 value7 value8
[C] value9 value10 value11 value12
[D] value13 value14 value15 value16
我希望矩阵的行名称和列名称与 Dataframe 中的ID列完全匹配。
矩阵应为(例如):请注意,由于D在 Dataframe 中丢失,因此D不显示。
[A][B][C]
[A] value1 value2 value3 value4
[B] value9 value10 value11 value12
[C] value13 value14 value15 value16
使用下面的命令的问题是它只过滤行,我需要删除列和行,如果在 Dataframe 中没有找到,所以矩阵仍然是一个正方形。最终矩阵的行名称和列名应该完全匹配 Dataframe 中的ID列。
matrix <- matrix[row.names(matrix)%in%dataframe$ID,]
行名称必须等于矩阵的列名称,因此必须为正方形。这必须为真:
identical(rownames(matrix),colnames(matrix))
1条答案
按热度按时间2jcobegt1#
使用
match
两次。创建于2022年12月20日,使用reprex v2.0.2
编辑
如果
df1$ID
中没有列名和行名,则intersect
是一个解决方案。创建于2022年12月21日,使用reprex v2.0.2