여러 데이터의 변수 목록을 포함하는 목록의 각 개체를 정렬하는 방법

Nov 24 2020

목록이 있습니다

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

각 열을 AZ별로 정렬 할 수 있습니까? col by col 관계가 없습니다. 이것은 cbind가 생성 된 목록입니다. 이 목록을 작성하는 코드는 다음과 같습니다.

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

목록에서 .CSV를 직접 정렬 할 수 있습니까? 아니면 목록을 작성하는 동안 변경해야합니까? 그리고 어떻게?

현재 목록은 다음과 같습니다.

최종 목록은 다음과 같습니다.

감사

답변

1 akrun Nov 24 2020 at 20:39

오버 우리 루프 list, sort요소 먼저, 다음을 할당 length'MX'의 그것과 반환 NA는 'X1'을 추가 분류

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

이름을 기준으로 데이터 열을 정렬하려면

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