1
나는 최적화하고자하는이 벡터의 값/문자열에 해당하는 경우 dataframe의 열 및 검사의 선택 집합을 반복 루프에 대한 중첩 된 다음apply?를 사용하여 R에서 중첩 for 루프를 최적화합니다.
Positions=c()
for (col in vectorCols) {
for (code in vectorCodes){
Positions<- c(Positions,which(as.numeric(df[,col])==code))
}
dataframe 800,000로, 매우 큰 행. vectorCodes는 100 개의 항목으로 구성 될 수 있으며 약 20 개의 선택된 열 (2000 개 중 개)이 될 수 있습니다.
은 또한 다음과 같은 것을 시도했다, 그러나
FunctionGrepCol<-function(col){
Positions <- unlist(lapply(vectorCodes , function(x) (Positions,which(as.numeric(df[,col])==x))))
}
Positions <-unlist(lapply(vectorCols, FunctionGrepCol))
을 최적화하기 위해 적용 기능에 루프 중첩을 넣어 결합하는 방법이 도움이되지 않았다?
작은 예제 입력과 예상 출력을 게시 할 수 있습니까? 여기서 제공 한 것을 토대로 작업 코드를 제공하기가 어렵습니다. – Gopala
'which'는 이미 벡터화되었으므로 왜 그걸 전혀 루핑하고 있는지 확신 할 수 없습니다. 예 :'x <- sample (1:10, 100, replace = TRUE); (% x % in % c (2, 3))' – Gopala
%는 % for가 for 루프보다 느리다는 것을 알았지 만 실제 타이밍이 없으므로 시간을 잡으려고 노력할 것입니다. 편집 : 흠, 좋아, 실제로 훨씬 더 빠릅니다. 나는 for 루프가이 경우 더 빠르다고 생각한 이유를 모르겠습니다. 매우 감사합니다. – tafelplankje