며칠 전에 게시 한이 질문 에 이어 모든 길이의 조합에 대해 동일한 케이스를 확장하고 싶습니다.
따라서 다음과 같은 형식의 벡터가 있습니다.
markers <- LETTERS[1:5]
원래는 가능한 모든 조합의 조건 +
과 -
모든 마커를 원했습니다 . 즉, 5 개 조합의 "최하위 계층 수준"입니다.
그래서 위의 질문에 대한 답을 적용하여 다음을 얻었습니다.
[1] "A+/B+/C+/D+/E+" "A-/B+/C+/D+/E+" "A+/B-/C+/D+/E+" "A-/B-/C+/D+/E+" "A+/B+/C-/D+/E+" "A-/B+/C-/D+/E+" "A+/B-/C-/D+/E+"
[8] "A-/B-/C-/D+/E+" "A+/B+/C+/D-/E+" "A-/B+/C+/D-/E+" "A+/B-/C+/D-/E+" "A-/B-/C+/D-/E+" "A+/B+/C-/D-/E+" "A-/B+/C-/D-/E+"
[15] "A+/B-/C-/D-/E+" "A-/B-/C-/D-/E+" "A+/B+/C+/D+/E-" "A-/B+/C+/D+/E-" "A+/B-/C+/D+/E-" "A-/B-/C+/D+/E-" "A+/B+/C-/D+/E-"
[22] "A-/B+/C-/D+/E-" "A+/B-/C-/D+/E-" "A-/B-/C-/D+/E-" "A+/B+/C+/D-/E-" "A-/B+/C+/D-/E-" "A+/B-/C+/D-/E-" "A-/B-/C+/D-/E-"
[29] "A+/B+/C-/D-/E-" "A-/B+/C-/D-/E-" "A+/B-/C-/D-/E-" "A-/B-/C-/D-/E-"
이제 이것을 1, 2, 3, 4 마커 조합의 "상위 계층"수준으로 확장하고 싶습니다 . 그래서 나는 다음과 같은 것을 얻을 것입니다.
"A+"
"A-"
"B+"
"B-"
"C+"
"C-"
...
"A+/B+"
"A-/B+"
"A+/B-"
"A-/B-"
"B+/C+"
"B+/C-"
"B-/C+"
"B-/C-"
...
"A+/B+/C+"
"A-/B+/C+"
...
"A+/B+/C+/D+/E+"
"A-/B+/C+/D+/E+"
"A+/B-/C+/D+/E+"
"A-/B-/C+/D+/E+"
"A+/B+/C-/D+/E+"
...
이전 질문에 대한 대답을 기반으로 가장 빠른 최적의 방법은 무엇입니까?
한 번에 수행 할 필요는 없습니다. 5 개 그룹의 이전 결과에서 "내부 노드"를 가져 오는 것이 여전히 괜찮습니다 (또는 더 좋을 것입니다) expand.grid
. 중간 결과를 작업 할 수도 있습니다.
어떤 생각? 감사!
편집하다
내 의도에 가장 좋은 방법은 실제로 상위 계층 조합의 모든 마커 에 대한 자리 표시자를 유지하는 것입니다.
그래서 예를 들어,이 경우 A+/D-
될 것A+/NA/NA/D-/NA
2 편집
가능한 모든 n- 크기 조합 (포함 NA
)을 처음부터 만드는 첫 번째 대답조차도 정말 좋습니다. 실제 시나리오에서는 5 개의 "가장 낮은 계층 수준"조합의 훨씬 작은 필터링 된 목록을 검색 할 수 있습니다. 내가 가장 관심을 가질만한 "마커".
이 시나리오에서는 NA
필터링 된 목록에서 가능한 모든 n-을 생성하는 대신 1,2,3,4 ... n (와 ) 조합의 "상위 수준 노드"를 추출하는 옵션을 갖는 것이 정말 좋습니다. 처음부터 크기 조합) ...
어떤 생각?
여전히 NA 값을 유지하려면 "+"또는 "-"와 다른 값을 갖는 것으로 생각하면 NA 값도 있습니다. 다음과 같이 할 수 있습니다.
markers <- LETTERS[1:5]
test <- expand.grid(lapply(seq(markers), function(x) c("+","-","NA")),stringsAsFactors=FALSE)
apply(test,1,function(x){paste0(ifelse(x=="NA", "NA", markers),ifelse(x=="NA","",x),collapse = "/")})
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다