![](/img/trans.png)
[英]R dataframe to matrix such that the colnames and rownames are from parameters
[英]How to match rownames and colnames of a matrix to a column in a dataframe in R?
我有一個文本文件,其中有一個名為ID的列,其值例如 ABC
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。rownames = colnames。 (我的矩陣列名和行名匹配)。 rownames 和 colnames 也匹配數據框中 ID 列中的一些ID。 矩陣可能包含在數據框中找不到的額外 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
我希望矩陣行名和列名與數據框中的 ID 列完全匹配。
矩陣應該是(例如):注意 D 是如何不出現的,因為數據框中缺少 D。
[A][B][C]
[A] value1 value2 value3 value4
[B] value9 value10 value11 value12
[C] value13 value14 value15 value16
使用下面命令的問題是它只是過濾行,如果在數據框中找不到,我需要刪除列和行,所以矩陣仍然是一個正方形。 最終矩陣的行名和列名應與數據框中的 ID 列完全匹配。
matrix <- matrix[row.names(matrix)%in%dataframe$ID,]
行名必須 = 矩陣的列名,因此是一個正方形。 這一定是真的:
identical(rownames(matrix),colnames(matrix))
使用match
兩次。
df1 <- data.frame(ID = LETTERS[1:3])
mat <- matrix(1:16, ncol = 4, dimnames = list(LETTERS[1:4], LETTERS[1:4]))
i_row <- match(df1$ID, rownames(mat))
i_col <- match(df1$ID, colnames(mat))
mat[i_row, i_col]
#> A B C
#> A 1 5 9
#> B 2 6 10
#> C 3 7 11
創建於 2022-12-20,使用reprex v2.0.2
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.