주로 벡터 나리스트에서 수집 된 그래프와 유사한 데이터로 작업하고 있습니다.
대부분의 경우 지정된 인덱스별로 벡터/목록을 검사하고 현재 요소에 대한 결과 값을 결정하는 로직을 수행해야합니다.회피는 피하고 인덱스 정보는 유지
좀 더 정확하게하려면, 코드의 이러한 조각을 고려
for (i in 1:(length1 - 1))
for (j in (i + 1):length2)
for (k in 1:length3) {
d1 <- data[i, k]
d2 <- data[j, k]
if (d1 != d2)
otherData[i, j, k] <- list(c(min(d1, d2), max(d1, d2)))
else
otherData[i, j, k] <- list(c(1, 1))
}
내 질문은 : - :
- 인덱스의 벡터를 만들
는 이에게 좋은 해결책이 될 것인가 , 그리고 - (외부 함수에서 선언 된) 데이터 객체를보고 제공된 인덱스의 벡터를 사용하여 로직을 수행하는 내부 함수 (인덱스 벡터를 사용하는)가 적용됩니다
샘플 코드 (단순, 위의 코드에 전혀 연결) :
someFunc <- function(data) {
n <- length(data)
f <- function(i) {
return (doSthWith(data[i], i))
# do some logic with both the data and the index
}
return (sapply(1:n, f))
}
내가 생각 해낸 또 다른 솔루션하며,이 data.frame을 생성하고 인덱스를 데이터의 일부를 만드는 것입니다 lapply 함수는 기본적으로 입력 행에도 인덱스를 가지고 있습니다.
이러한 접근 방식에 대한 귀하의 생각에 매우 기뻐할 것입니다.
이 당신의 계산에 병 목입니다 : 작은 그림은 설명을 보충하기 위해? 엄지 손가락의 규칙은 - for/while 루프와 작동하는 경우 (그리고 큰 데이터가없는 경우) 루프는 훌륭하고 멋쟁이입니다. 작은 재현 가능한 예를 얻을 수 있습니까? –
아직 성능 측정 단계에 있지 않습니다. 항상 루핑 대신 R 스타일을 디자인하고 싶습니다. 일단 내가 올바른 마음의 틀에 들어 맞으면, 처음에는 루프 방식으로 생각하지 않고도 벡터화 된 솔루션을 생각해 낼 수 있습니다. 그래서 내가 묻는거야. 불행히도 지금 재현 가능한 예제를 제공 할 수는 없습니다. 주어진 문제를 해결하는 대신 일반적인 힌트를 생각했습니다 :) 응답 해 주셔서 감사합니다. – chemical