我有3个矩阵,分别命名为mat1mat2mat3.我想从这三个元素中创建一个新的矩阵,使其满足行名至少出现在其中两个元素中的条件.

假设我有以下矩阵作为例子.我需要一个新的矩阵,让它包含行名a, b, d, e, f,因为它满足至少出现在3个矩阵中的两个的条件.我如何作为一个函数来做到这一点?

mat1 <- as.matrix(c(1:4))
rownames(mat1) <- c("a","b","c","d")
mat1

mat2 <- as.matrix(c(15:18))
rownames(mat2) <- c("d","e","f","g")
mat2

mat3 <- as.matrix(c(3:9))
rownames(mat3) <- c("a","b","z","x","d","e","f")
mat3

推荐答案

rbind(mat1, mat2, mat3) |>
  (\(x) x[names(which(table(row.names(x)) > 1)), , drop = FALSE])()

#   [,1]
# a    1
# b    2
# d    4
# e   16
# f   17

R相关问答推荐

使用ggcorrplot在相关性矩阵上标注supertitle和index标签

过滤矩阵以获得R中的唯一组合

根据列表中项目的名称多次合并数据框和列表

在R底座中更改白天和夜晚的背景 colored颜色

如果列中存在相同的字符串,则对行值进行总和

ggplot geom_smooth()用于线性回归虚拟变量-没有回归线

在(g)子中使用asserable字符

在连续尺度上转置标签[瀑布图,R]

如何在一次运行中使用count进行多列计数

如何计算多个日期是否在一个日期范围内

使用rest从header(h2,h3,table)提取分层信息

如何删除仅在数据集顶部和底部包含零的行

比较理论阿尔法和经验阿尔法

仅在Facet_WRAP()中的相应方面包含geom_abline()

在另一个包中设置断点&S R函数

R中Gamma回归模型均方误差的两种计算方法不一致

如何在PrePlot()中将多个元素设置为斜体

如果条件匹配,则使用Mariate粘贴列名

按组跨多列创建伪变量

使用LAG和dplyr执行计算,以便按行和按组迭代