불행히도 *apply
계열의 기능은 이러한 방식으로 작동 할 수 있습니다. (이것은뿐만 아니라 시간에 나에게 좌절했다, 그러나 나는 감사와 함께 출근했습니다.)이 두 가지 장애물이있다
:
기능 거래의 *apply
가족 전화를 걸 때 MyMatrix
의 값으로 행을 반복 한 다음 (각 출력의 차원을 기준으로) 결과를 조인합니다. 매번 재평가되지 않습니다.
다시 평가 한 경우에도 MyFunc
은 전체 행렬이 아닌 한 번에 한 행 (이 예에서는) 만 지정됩니다. (MyMatrix
에 두 번째 참조는이 문제 일 것으로 보인다.)
난 당신이 다음 MyFunc
함수는 인수로 당신이있는 전체 매트릭스 행을 받아 들일 필요가 말을하는지 무슨 생각을하려면 당신은 유지해야하는 경우,
for (rr in seq.int(nrow(MyMatrix))) {
MyMatrix[rr,] <- MyFunc(rr, MyMatrix)
}
또는 : 운영 및 람, 질문에 바로 행을 리턴 : 그 전제를 사용
MyFunc <- function(rownum, mtx) {
# ...
mtx[rownum,]
}
, 당신은 할 수 *apply
가족과 함께 :
MyMatrix.new <- sapply(seq.int(nrow(MyMatrix)), MyFunc, MyMatrix)
당신은 여기 sapply()
의 반환의 전치 (t()
)를 할 수 있습니다.
MyFunc
이 단 하나의 행 대신 전체 행렬을 반환하는 경우 조금 다르게 수행 할 수 있습니다.
내가 제안한 것을 직접 수행 할 수있는 방법이 없습니다.
내가 생각한 것입니다. 루프를 피하려고했지만 지금은 적용이 다른 루프 일 뿐이며 효율성을 얻지 못한다는 것을 알았습니다. 시간 내 줘서 고마워 ! – Pane