Ich habe eine Matrix mit 6000 Spalten und jede Spalte gehört zu einer von 100 "Gruppen" die ich brauche. Ich muss diese Matrix in eine Liste 100 kleinere Matrizen konvertieren. Dies ist ein Spielzeug Beispiel dafür, was ich habe:Matrix zur Liste der Matrixgruppe nach Spaltennamen in R
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")
so die „Gruppe“ durch den Nachnamen eines jeden colname identifiziert wird, hier gibt es zwei Gruppen. Das Ergebnis, das ich brauchen würde wie folgt aussehen:
list(cbind(c(2,2,2),c(4,4,4)),cbind(c(3,3,3),c(1,1,1)))
Ich habe nachgedacht und ich denke, es ist so etwas wie dies sein sollte:
lapply(do.call(cbind,sapply(something here to find the columns in each group)))
, aber ich habe nicht herausfinden, wie genau es zu tun.
könnten Sie auch tun 'Gruppen <- sapply (strsplit (x = COLNAMES (mat), Split =" „),' [ ', 2)' oder 'Gruppen < - gsub (". * (\\ d +) $", "\\ 1", Spaltennamen (Matte)) ' – MrFlick
danke @db genau das, was ich brauchte. –