2013-06-03 3 views
1

R 프로그래밍에 문제가 있습니다. 행렬에서 대각선을 제외하고 각 행의 중앙값을 어떻게 찾을 수 있습니까? 매트릭스 4 × 4대각선을 제외한 R을 제외한 중간 값을 찾으십시오

0 1 2 3 

1 0 1 2 

2 1 0 1 

3 2 1 0 

내가 대각선을 제외한 각 행의 중간 찾으려면 (이 예에서을의 DIAG = 0)

나는 시도했다 : :

diag(A) <- NA 
mean(A, na.rm = TRUE) # doesn't work 

apply(A, 1, median) # it works but the calculation including the diagonal. 

답변

2

이 시도 :

A <- matrix(c(0,1,2,3,1,0,1,2,2,1,0,1,3,2,1,0),nrow=4) 
sapply(1:4, function(x) median(A[x,-x])) 

[1] 2 1 1 2 
1

왜 내가 사용하고 있는지 잘 모르겠다 mean(); median()을 사용해 보시지 않겠습니까? 여기에 간다 :

A <- read.table(text="0 1 2 3 
1 0 1 2 
2 1 0 1 
3 2 1 0", header=F) 
A <- as.matrix(A) 
diag(A) <- NA 

A 
    V1 V2 V3 V4 
[1,] NA 1 2 3 
[2,] 1 NA 1 2 
[3,] 2 1 NA 1 
[4,] 3 2 1 NA 

myFun <- function(x){ median(x, na.rm=T)} 
apply(A, 1, FUN=myFun) 
[1] 2 1 1 2