R에있는 "적용"유형 함수로 고민하고 있습니다. 행렬이 있고 원하는 행렬 요소를 사용하려면 사용자를 사용하십시오 행렬의 입력을 기반으로 일부 계산을 수행하고 이러한 계산의 결과를 저장할 새 계산식을 작성합니다.행렬의 각 행 요소를 사용하여 함수 적용
나는 기능이
그래서 예를 들어 행렬 A와 계산의 일종을 수행하는 기능을 가정 하나 개의 출력을 반환 할 때이 작업을 수행하는 방법을 알아 낸. I 필요한 것을
> A=matrix(1:16,nrow=4)
> A
[,1] [,2] [,3] [,4]
[1,] 1 5 9 13
[2,] 2 6 10 14
[3,] 3 7 11 15
[4,] 4 8 12 16
> B=apply(A,1,FUN=function(x) x[1]**2+2*x[2]+x[3]*x[4])
> B
[1] 128 156 188 224
는 출력이 하나 개 이상의 원소들의 벡터 인 경우,이 확장 I의 예처럼 하나가 아닌 세 개의 다른 다항식의 값을 계산하도록 예컨대 상상한다 이 3 개의 다항식의 계산을 포함 할 4x3 행렬을 다시 얻는다.
당분간 나는 행을 기준으로 데이터를 읽고, 함수를 실행하고 결과를 새로운 행렬에 저장하는 "for"루프를 사용하여이 작업을 수행하고 있지만 고통스럽게 느립니다. 예는 다음과 같습니다
A=matrix(1:16,nrow=4)
A
[,1] [,2] [,3] [,4]
[1,] 1 5 9 13
[2,] 2 6 10 14
[3,] 3 7 11 15
[4,] 4 8 12 16
calc=function(e1,e2,e3,e4){
x1=e1*e2+3*e3*e4
x2=e4+e2+5*e3**2-e4
x3=e1*e2*e3*e4
return(c(x1,x2,x3))
}
results=matrix(nrow=4,ncol=3)
for (i in 1:4){
k=calc(A[i,1],A[i,2],A[i,3],A[i,4])
results[i,]=k
}
results
[,1] [,2] [,3]
[1,] 356 410 585
[2,] 432 506 1680
[3,] 516 612 3465
[4,] 608 728 6144
나는 "를"피 매트릭스 유사한 작업을 적용 할 수있는 방법에 대한 모든 아이디어를 환영보다 더 있습니다. (나는 패키지 적용에 제약이 없다.)
당신이 쉽게 apply''로 재 작성하는 방법을 알아낼 수있는 당신의'for' 루프를 포함하는 경우. – janos
결과를 연장했습니다 – KGeor