how to sort each object in a list that contain the variable list from multiple data

邮差的信 提交于 2020-12-14 15:28:50

问题


I have a list

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

Is it possible to sort each col by A-Z. There is no relationship col by col. This is list is using cbind created. The code to build this list is

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

Could we directly sort the .CSV in the list, or we need to make changes while we build the list? And how?

Currently the list looks like

The final list will looks like this:

Thanks


回答1:


We loop over the list, sort the elements first, then assign the length to that of 'mx', and return the sorted NA appended 'x1'

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

If we want to order the columns of the data based on the names, then

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


来源:https://stackoverflow.com/questions/64994458/how-to-sort-each-object-in-a-list-that-contain-the-variable-list-from-multiple-d

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!