簡體   English   中英

在 R 中按行名和列名對矩陣進行子集化

[英]Subsetting a matrix by row names and column names in R

我有一個看起來像這樣的對稱矩陣(這是 6 只動物之間的關系矩陣):

     AN1   AN2   AN3   AN4   AN5   AN6
AN1   1    0.5    0   0.25    0    0.5
AN2  0.5    1     0    0.5    0     0
AN3   0     0     1   0.25    0     0
AN4  0.25  0.5  0.25    1    0.5    0
AN5   0     0     0    0.5    1     0
AN6  0.5    0     0     0     0     1

我想子集這個矩陣和 select 只有一些動物存儲在一維 dataframe 中。 這是我想要的矩陣:

     AN1   AN3   AN6
AN1   1     0    0.5
AN3   0     1     0
AN6  0.5    1     1

這是我嘗試過的:

list_individuals <- as.list(df['ID'])  # create list from the dataframe (the list contains the animals that I want to extract from the matrix: AN1, AN3 and AN6)
matrix2 <- subset(original_maxtrix, rownames(original_maxtrix) %in% list_individuals[["ID"]])
matrix3 <- subset(matrix2, colnames(matrix2) %in% list_individuals[["ID"]])

但是在選擇列(最后一行代碼)時出現問題: x[subset &.is,na(subset), vars: drop = drop] 中的錯誤:(下標)邏輯下標太長

我在這里想念什么?

嘗試以這種方式過濾行和列:

matrix[rownames(matrix)%in%list_individuals,colnames(matrix)%in%list_individuals]

只有list_individuals中包含的行和列將保留在 output 中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM