删除R中矩阵的部分

时间:2011-02-01 14:37:30

标签: r matrix

我改变了我的问题,使我的问题更加明显:

您好, 我无法弄清楚如何删除R中的矩阵部分:

例如

x <- matrix(c(1,2,3,4,5,6,7,8,9), nrow = 3)

现在我想删除子矩阵x[2,1:2],以便最终矩阵(与“删除单元格并在excel中向上移动”相比)类似

1  4  7
3  6  8
NA NA 9.

谢谢你的帮助!

3 个答案:

答案 0 :(得分:4)

首先将要保持的单元格移动到第二行。

x[2,1:2] <- x[3,1:2]

然后将您想要丢失的内容设置为NA

x[3,1:2] <- NA

或者,一步到位,

x[2:3, 1:2] <- x[c(3,NA), 1:2]

结果,无论哪种方式:

> x
     [,1] [,2] [,3]
[1,]    1    4    7
[2,]    3    6    8
[3,]   NA   NA    9

这样做的基本功能可能看起来像

excelremoveup <- function(mat, rows, cols) {
  keep <- which(!(1:nrow(mat)) %in% rows)
  keep <- c(keep, rep(NA, nrow(mat)-length(keep)))
  mat[, cols] <- mat[keep, cols]
  mat
}

你会这样称呼它。

excelremoveup(x,2,1:2)

答案 1 :(得分:2)

矩阵从上到下,从左到右编制索引。你可以设置你想要的任何子矩阵,NA:

> x[1:2,1:2] <- NA
> x
     [,1] [,2] [,3]
[1,]   NA   NA    7
[2,]   NA   NA    8
[3,]    3    6    9

答案 2 :(得分:0)

您还可以使用data.entry()作为编辑矩阵的类似于excell的方式:

x <- matrix(c(1,2,3,4,5,6,7,8,9), nrow = 3)
data.entry(x)

只需双击要删除的号码即可将其删除。但是,我不建议将其作为索引,因为a。它需要手动输入和b。你没有学会以这种方式使用R。

我认为你是R的新手吗?您可能希望阅读其中一本手册。这是我开始时喜欢的那个:

http://cran.r-project.org/doc/contrib/Paradis-rdebuts_en.pdf