【问题标题】:outputting the middle element(s) of matrices in R输出R中矩阵的中间元素
【发布时间】:2018-09-10 00:33:31
【问题描述】:

我真的被这个问题困住了:请帮忙。 创建一个将矩阵作为输入并输出中间的代码 矩阵的元素。 (提示:考虑地板和天花板的功能)

【问题讨论】:

  • 好吧,你被卡住了。您能否向我们展示您迄今为止所做的尝试,以及失败的地点/原因?尝试“输出向量的中间元素”怎么样,这会更容易但需要相同的基本机制? (问题是否指定了如果行数和/或列数为偶数时该怎么做,在这种情况下有几个合理的答案?)
  • 如果 Stackoverflow 会在您没有任何尝试的情况下为您完成作业,这不会让您变得更好。 How do I ask and answer homework questions?
  • ##Problem4 矩阵函数的中间元素 UNFINISHED matrixf = function(a, b, x, y) { f = matrix(a:b, x, y) return(f) len = x* y evensq = seq(from=2, to=len, by=2) if }
  • 这是我目前所拥有的

标签: r matrix output floor ceil


【解决方案1】:

您可以使用 %/% - 整数除法和 %% 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

【讨论】:

    猜你喜欢
    • 2015-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多