如何将特定行移动到R中矩阵的末尾?

时间:2017-10-13 05:51:53

标签: r matrix

我有一个带有一些空行和空列的矩阵。我想将空行和列一直移动到右侧和底部矩阵的末尾。

我设法获取所有空行的rownames和columnnames。

我试图做的事情:

  1. 创建一个for循环,根据索引删除所有行和列(由于空行的顺序在每次删除后都会发生变化,因此无效)所以我放弃了这个想法。
  2. 根据行名称的属性删除行。
  3. Cnew = Cnew[!(Cnew$rownames %in% empty_rownames)]

    似乎无法让它工作......

2 个答案:

答案 0 :(得分:0)

如果仅删除某些列中包含NA值的行(观察)

test <-matrix( 
     c(rep(c(NA, 1:9), 8)  ), 
     nrow=10, 
     ncol=8) 
test <- test[complete.cases(test),]

答案 1 :(得分:0)

假设您有一个6x6矩阵,其中包含一个空列和一个空行(表示所有条目都为NA

Cnew <- matrix(nrow = 6, ncol = 6, data = 1)

Cnew[,4] <- NA
Cnew[3,] <- NA

empty.columns <- which(colSums(Cnew, na.rm = TRUE) == 0)
empty.rows <- which(rowSums(Cnew, na.rm = TRUE) == 0)

# we first delete the row and cols

# for deleting do
Cdel <- Cnew[-empty.rows,-empty.columns]

# and then paste the rows and cols at the edges again
Cdel <- cbind(Cdel, rep(NA, length(empty.columns)))
Cdel <- rbind(Cdel, rep(NA, length(empty.rows)))