【问题标题】:R // subset matrix rows and columns based on namesR // 根据名称子集矩阵行和列
【发布时间】:2020-07-14 10:36:15
【问题描述】:

我想根据列表输入(将动态更改)对大型矩阵(列和行)进行子集化。示例(请参见下面的可重现示例):我有一个对称矩阵 (x) 和一个列表,其中包含我想要在我的子集(类别)中拥有的行和列。如何对行和列进行子集化,以便我的结果仅显示 a 和 c 的行和列(请参阅所需的输出)

categories = c("a", "c")

a = c(2,3,4)
b = c(1,9,8)
c = c(5,6,7)

x = cbind(a,b,c)
rownames(x) <- c("a", "b", "c")
x = as.matrix(x)

# attempt: 
result = x[x %in% categories == TRUE]

desired output 
a = c(2,4)
c = c(5,7)
y = cbind(a,c)
rownames(y) <- c("a", "c")
y = as.matrix(y)

【问题讨论】:

    标签: r dataframe matrix subset


    【解决方案1】:

    您还可以为名称设置子集。

    y <- x[c("a", "c"), c("a", "c")]
    y
    #   a c
    # a 2 5
    # c 4 7
    

    或者,使用subset

    y <- subset(x, colnames(x) %in% c("a", "c"), 
                rownames(x) %in% c("a", "c"))
    y
    #   a c
    # a 2 5
    # c 4 7
    

    【讨论】:

    • 我使用了子集版本,效果很好!谢谢!
    猜你喜欢
    • 1970-01-01
    • 2014-11-20
    • 2021-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-17
    • 2015-03-27
    相关资源
    最近更新 更多