/ / знайти медіану, за винятком діагоналі в R - r, медіани, діагоналі

знайти медіану, виключаючи діагоналі в R - r, медіани, діагоналі

Я "m мають проблеми з програмуванням R. З матриці, як я можу знайти медіану кожного рядка виключити діагональ?

Приклад: матриця 4х4

0 1 2 3

1 0 1 2

2 1 0 1

3 2 1 0

Я хочу знайти медіану кожного рядка, за винятком діагоналі (у цьому ex, діаг = 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 для відповіді № 1

Спробуйте це:

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 для відповіді № 2

Я не знаю, чому ви використовуєте 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