2 개의 데이터 프레임이 있습니다. r에있는 루프에 중첩 됨
M
vec_a vec_b vec_c
A 0.0 0 0
B 0.5 0 0
C 0.5 1 1
Rank
rk_ini
0.3333333
0.3333333
0.3333333
내가
Rank
의 1 행의 값에 의해
M
의 1 행에있는 각 값을 곱 추가하고 싶습니다
이 제품들은 함께. 그런 다음 행 2와 행 3에 대해 동일하게 수행하십시오.
그런 다음이 세 값을 벡터와 열로 연결하여 두 번째 데이터 프레임 Rank
에 바인딩하고 싶습니다. 이것은 내가 방금 계산 한 새로운 값으로 반복되어야하며, 더 많은 값을 생성하여 Rank
에 바인딩하고, 함수의 시작 부분에서 지정한 횟수만큼 반복합니다. 새로운 컬럼을 지속적으로 바인딩하여 순위를 지정하십시오.
rk_ini nextrank[i] nextrank[i] nextrank[i] nextrank[i] nextrank[i]
A 0.3333333 0 0.1666667 0.8333333 0 0
B 0.3333333 0 0.1666667 0.8333333 0 0
C 0.3333333 0 0.1666667 0.8333333 0 0
결과 더 다음과 같아야합니다 :
rk_ini nextrank[i] nextrank[i] nextrank[i] nextrank[i] nextrank[i]
A 0.3333333 0 ....
B 0.3333333 0.1666667 ....
C 0.3333333 0.8333333 ....
를 각 연속 행으로 새로운 열에서의 제품의 합계 인
## iterate t times to get rank
for(i in 1:t) {
for (j in 1:(nrow(M))) {
nr1[j] <- sum((Rank[j, i] * M[j, 1]),
(Rank[j, i] * M[j, 2]),
(Rank[j, i] * M[j, 3]))
nextrank <- c(nextrank, nr1[j])
}
Rank <- cbind(Rank, nextrank[i])
}
마지막으로 여기 결과입니다 이전 열에 M
의 해당 행에있는 각 값을 곱합니다.
나는 여러 가지를 시도했으며이 마지막으로 오류가 발생하지 않지만 찾고있는 결과를 생성하지 않습니다. 여기서 무슨 일이 일어나고 있는지 이해하는데 도움을 줄 수 있다면 큰 도움이 될 것입니다.
감사합니다.
'M'과 'R'의 행 방향 곱의 계산은 행렬 곱셈의 경우가 아닙니다. (즉,'rowSums (sweep (M, 1, R, '*'))'는'M % * % R'과 같지 않습니다). – jbaums
(+1) 사과 - 질문을 잘못 읽었습니다. 좋은 접근. – jbaums
이것은 내가하고 싶은 것처럼 보입니다. 행렬 곱셈 문제입니다. 이 기능을 사용할 수 있는지 몰랐습니다. – DR41