我有一个矩阵,它有6000列,每一列都属于100个所需的“组”之一。我需要将这个矩阵转换为包含100个较小矩阵的列表。以下是我拥有的示例:
mat = cbind(c(2,2,2),c(3,3,3),c(4,4,4),c(1,1,1))
colnames(mat) = c("2018.3 1","2018.3 2","2019.1 1","2019.2 2")
所以“组”由每个列名的姓氏识别,这里有2个组。我需要的结果应该是:
list(cbind(c(2,2,2),c(4,4,4)),cbind(c(3,3,3),c(1,1,1)))
我一直在思考,我认为应该是这样的:
lapply(do.call(cbind,sapply(something here to find the columns in each group)))
但我还没有确切地想到如何做到这一点。
groups <- sapply(strsplit(x = colnames(mat), split = " "),
[, 2)
或者groups <- gsub(".*(\\d+)$","\\1", colnames(mat))
。 - MrFlick