如何按第5列将R语言中的矩阵拆分为矩阵列表?
R语言按分组列拆分矩阵为子矩阵列表的实现方法
最直接高效的方式是用R基础包的split()函数,步骤如下:
- 先把矩阵转成数据框(
split对数据框的拆分逻辑更直观),按第5列的分组标识拆分,最后再把每个子数据框转回矩阵:
# 按第5列分组拆分 split_result <- split(as.data.frame(wxc), wxc[, 5]) # 将每个子数据框转回矩阵格式 split_result <- lapply(split_result, as.matrix)
拆分后的列表split_result里,每个元素对应一个分组的子矩阵,列表名称就是分组值(1、2、3)。
如果习惯用tidyverse工具链,也可以用dplyr的group_split():
library(dplyr) # 转成 tibble 后分组拆分,再转回矩阵 split_result <- wxc %>% as_tibble() %>% group_split(.[[5]], .keep = TRUE) %>% lapply(as.matrix)
group_split()会直接按指定列生成分组列表,.keep = TRUE用来保留分组列,不需要的话可以改成FALSE。
内容的提问来源于stack exchange,提问作者Shawn Brar
相关产品推荐
相关产品推荐

