вывод среднего элемента матрицы в R - PullRequest
0 голосов
/ 10 сентября 2018

Я действительно застрял в этой проблеме: Пожалуйста, помогите. Создайте код, который принимает матрицу в качестве входных данных и выводит середину элемент матрицы. (подсказка: подумайте о функциях пола и потолка)

1 Ответ

0 голосов
/ 11 сентября 2018

Вы можете использовать %/% - целочисленное деление и %% 2 - операцию по модулю 2, чтобы извлечь центральный элемент (ы) в зависимости от количества столбцов и строк (нечетных или четных). Пожалуйста, смотрите ниже:

middle <- function(m) {
  nr <- nrow(m)
  nc <- ncol(m)
  if (nr %% 2 == 0) {
    ns <- c(nr %/% 2, nr %/% 2 + 1) 
  } else {
    ns <- nr %/% 2 + 1
  }

  if (nc %% 2 == 0) {
    ms <- c(nc %/% 2, nc %/% 2 + 1)
  } else {
    ms <- nc %/% 2 + 1
  }
  m[ns, ms]
}


m <- matrix(1:16, nrow = 4)
m
middle(m)

Выход для тестовой матрицы (4x4):

> m
     [,1] [,2] [,3] [,4]
[1,]    1    5    9   13
[2,]    2    6   10   14
[3,]    3    7   11   15
[4,]    4    8   12   16
> middle(m)
     [,1] [,2]
[1,]    6   10
[2,]    7   11
...