如何将特定行移动到R中矩阵的末尾?
问题描述:
我有一些空行和空列的矩阵。我想将空行和列全部移动到右侧和底部矩阵的末端。如何将特定行移动到R中矩阵的末尾?
我设法获得所有空行的rownames和列名。
什么,我试图做的:
- 做一个for循环,删除掉基于索引的所有行和列(因为空行更改后的每个顺序删除不工作,所以我放弃了这个想法)
- 根据行名称的属性删除行。
Cnew = Cnew[!(Cnew$rownames %in% empty_rownames)]
似乎无法得到它的工作虽然...
答
假设您有一个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)))
答
如果只是为了删除行(观察)与NA值在一些列的
test <-matrix(
c(rep(c(NA, 1:9), 8) ),
nrow=10,
ncol=8)
test <- test[complete.cases(test),]