como classificar cada objeto em uma lista que contém a lista de variáveis ​​de vários dados

Nov 24 2020

Eu tenho uma lista

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"))

É possível classificar cada coluna por AZ. Não há relação col por col. Esta lista está usando o cbind criado. O código para construir esta lista é

lst1 <- lapply(mget(ls(pattern = "*.CSV")), names)
mx <- max(lengths(lst1))
do.call(cbind, lapply(lst1, `length<-`, mx))

Podemos classificar diretamente o .CSV na lista ou precisamos fazer alterações enquanto construímos a lista? E como?

Atualmente a lista se parece com

A lista final será semelhante a esta:

obrigado

Respostas

1 akrun Nov 24 2020 at 20:39

Nós varrer o list, sortos elementos em primeiro lugar, em seguida, atribuir o lengthao de 'mx', e voltar a classificadas NA anexado 'x1'

lst1 <- lapply(lst1, function(x) {
          x1 <- sort(x)
          length(x1) <- mx
           x1})

Se quisermos ordenar as colunas dos dados com base nos nomes, então

lst2 <- lapply(mget(ls(pattern = "*.CSV")), function(x) {
           x[sort(names(x))]
         })