【问题标题】:Subsetting a matrix by row names and column names in RR中的行名和列名对矩阵进行子集化
【发布时间】:2021-04-29 01:31:14
【问题描述】:

我有一个如下所示的对称矩阵(这是 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

我想对该矩阵进行子集化,并仅选择存储在一维数据框中的一些动物。这是我想要的矩阵:

     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] 中的错误: (下标) 逻辑下标太长

我在这里错过了什么?

【问题讨论】:

  • df 是一个数据框,其中一列包含我要从矩阵中提取的动物的 ID

标签: r matrix


【解决方案1】:

尝试以这种方式过滤行和列:

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

只有list_individuals 中包含的行和列才会保留在输出中。

【讨论】:

  • 谢谢,我稍微修改了你的代码,它适用于这个代码:matrix[rownames(matrix)%in%list_individuals[["ID"]],colnames(matrix)%in%list_individuals[["ID"]]]
猜你喜欢
  • 1970-01-01
  • 2018-08-07
  • 2020-07-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-24
  • 1970-01-01
相关资源
最近更新 更多