죄송합니다. 이것은 사소한 것처럼 보이지만 잠시 인터넷을 검색 한 후에 해결할 수 없습니다.R : 행렬에 ave()를 적용하는 간단한 방법이 있습니까?
필자는 행렬과 관련된 요소 벡터를 가지고 있습니다. 목표는 모든 요소에 대해 개별적으로 rowMeans를 가져 와서 원래의 행렬 구조를 유지하는 것입니다. 그래서 아마 ave()와 같은 것이지만 2 차원 배열에서 작업 할 것입니다.
(mat <- rbind(1:5,6:10,11:15))
[,1] [,2] [,3] [,4] [,5]
[1,] 1 2 3 4 5
[2,] 6 7 8 9 10
[3,] 11 12 13 14 15
groups <- c(1,1,1,2,2)
mat[,groups==1] <- rowMeans(mat[,groups==1]) # I am asking about this part
mat[,groups==2] <- rowMeans(mat[,groups==2]) # ...
mat
[,1] [,2] [,3] [,4] [,5]
[1,] 2 2 2 4.5 4.5
[2,] 7 7 7 9.5 9.5
[3,] 12 12 12 14.5 14.5
실제로이 행렬 행 (적은 열)의 수백만 것 :
는 여기에 원유 데모입니다. 행 단위로 작동하는 솔루션이 너무 느릴 수 있습니다.
내 기능을 작성하는 중입니다. 그러나 이것은 쉬운 한 줄짜리 해결책이있는 것 같습니다.
ave(m, row(m))
그게 당신이 제공하시기 바랍니다하지 것입니다 경우 m
당신의 행렬이다
기꺼이 답변을 수락합니다. 그것은 정확하고 나에게 새로운 아이디어를주었습니다. 그러나 나는 루프가이 경우 이해하기가 더 쉬울 것 같아서 :) 실제로 몇 가지 기본적인 한 단어 기능이 누락되었다고 생각했습니다. –