comment trier chaque objet d'une liste contenant la liste de variables à partir de plusieurs données
Nov 24 2020
J'ai une liste
lst1<-list(cxr.CSV = c("project", "Subject", "Site", "InstanceName",
"RecordPosition", "CXRDT", "CXRFIND", "CXRFNDSP", "CXRYN"), cy1.CSV = c("project",
"Subject", "Site", "InstanceName", "RecordPosition", "CYSHPYN",
"CYSHPDT", "CY1TMPT", "CYND", "CYNDSP", "CYDT", "CYTM"), cy2.CSV = c("project",
"Subject", "Site", "InstanceName", "RecordPosition", "CYSHPYN",
"CYSHPDT", "CY2TMPT", "CYND", "CYNDSP", "CYDT", "CYTM"), cy24.CSV = c("project",
"Subject", "Site", "InstanceName", "RecordPosition", "CYSHPYN",
"CYSHPDT", "CY1TMPT", "CYND", "CYNDSP", "CYDT", "CYTM"), cy3.CSV = c("project",
"Subject", "Site", "InstanceName", "RecordPosition", "CYSHPYN",
"CYSHPDT", "CY3TMPT", "CYND", "CYNDSP", "CYDT", "CYTM"), cy6.CSV = c("project",
"Subject", "Site", "InstanceName", "RecordPosition", "CYSHPYN",
"CYSHPDT", "CY1TMPT", "CYND", "CYNDSP", "CYDT", "CYTM"), dlt.CSV = c("project",
"Subject", "Site", "InstanceName", "RecordPosition", "DLTYN",
"DLTAE", "DLTSP"), dm.CSV = c("project", "Subject", "Site", "InstanceName",
"RecordPosition", "BRTHYR", "DMAGE", "SEX", "SEXSP", "FEMCBP",
"FEMCBPSP", "RACE", "RACESP", "ETHNIC"), dov.CSV = c("project",
"Subject", "Site", "InstanceName", "RecordPosition", "DOVDT",
"DOVAE", "DOVCM", "DOVCP"), dov_1.CSV = c("project", "Subject",
"Site", "InstanceName", "RecordPosition", "DOVDT"), ds.CSV = c("project",
"Subject", "Site", "InstanceName", "RecordPosition", "DSDT",
"DSREAS", "DSORTH", "DSWCSP"), ds_1.CSV = c("project", "Subject",
"Site", "InstanceName", "RecordPosition", "DSDT", "DSREAS", "DSWCSP",
"DSORTH"), dth.CSV = c("project", "Subject", "Site", "InstanceName",
"RecordPosition", "DTHFCDT", "DTHDT", "DTHDUR", "DTHREAS", "DTHROTH",
"DTHCOMM"), dv.CSV = c("project", "Subject", "Site", "InstanceName",
"RecordPosition", "DVYN", "DVVIS", "DVIDDAT", "DVSTDAT", "DVENDAT",
"DVCAT", "DVCATSP", "DVCATCD", "DVTERM", "REWFLAG", "REWCOMP",
"DVACN", "DVMETRPT", "DVCLSDAT", "DVCLS"), tegu.CSV = c("project",
"Subject", "Site", "InstanceName", "RecordPosition", "EGYN",
"EGDT", "EGNOU", "EGTM", "EGORRES", "EGHR", "EGPR", "EGQRS",
"EGQTINT", "ECGRR", "EGQTCFC", "EGQTCBC", "EGQTCNS", "EGQTCO",
"EGQTCOSP", "EGRSAB01", "EGRSAB02", "EGRSAB03", "EGRSAB04", "EGRSAB05",
"EGRSAB06", "EGRSAB07", "EGRSAB08", "EGRSAB09", "EGRSAB10", "EGRSAB11",
"EGRSAB12", "EGRSAB13", "EGABNCOM", "EGABNCS", "EGTMPT", "EGND"
), tegu_1.CSV = c("project", "Subject", "Site", "InstanceName",
"RecordPosition", "EGYN", "EGNOU", "EGND", "EGTMPT", "EGDT",
"EGTM", "EGORRES", "EGHR", "EGPR", "EGQRS", "EGQTINT", "ECGRR",
"EGQTCFC", "EGQTCBC", "EGQTCNS", "EGQTCO", "EGQTCOSP", "EGRSAB01",
"EGRSAB02", "EGRSAB03", "EGRSAB04", "EGRSAB05", "EGRSAB06", "EGRSAB07",
"EGRSAB08", "EGRSAB09", "EGRSAB10", "EGRSAB11", "EGRSAB12", "EGRSAB13",
"EGABNCOM", "EGABNCS"))
Est-il possible de trier chaque col par AZ. Il n'y a pas de relation col par col. Cette liste utilise cbind créé. Le code pour construire cette liste est
lst1 <- lapply(mget(ls(pattern = "*.CSV")), names)
mx <- max(lengths(lst1))
do.call(cbind, lapply(lst1, `length<-`, mx))
Pourrions-nous trier directement le .CSV dans la liste, ou nous devons apporter des modifications pendant que nous construisons la liste? Et comment?
Actuellement, la liste ressemble à

La liste finale ressemblera à ceci:

Merci
Réponses
1 akrun Nov 24 2020 at 20:39
On boucle sur list
, sort
les éléments, puis attribuer la length
à celle de « mx », et remettre le joint NA triée « x1 »
lst1 <- lapply(lst1, function(x) {
x1 <- sort(x)
length(x1) <- mx
x1})
Si nous voulons ordonner les colonnes des données en fonction des noms, alors
lst2 <- lapply(mget(ls(pattern = "*.CSV")), function(x) {
x[sort(names(x))]
})