[英]How can I delete columns of a matrix based on row values in R?
在這個方陣中,我想查找第一列中的所有非零值並刪除與非零值的行名對應的列。 然后我想查找下一個未刪除的列並重復相同的過程,並重復此操作直到我到達最后一列。 有什么建議嗎?
矩陣示例
添加了一個不是圖片的例子
newt <- matrix(c(0,1,0,0,1,0,0,1,0,0,0,1,0,1,0,1), nrow = 4, ncol = 4)
colnames(newt) <- c("1", "2", "3", "4")
僅應保留第 1 列和第 3 列
你可以利用這個while
循環:
rowname <- rownames(newt)
vec <- colnames(newt)
i <- 1
col <- vec[i]
while(i < length(vec)) {
vec <- setdiff(vec, rowname[newt[, col] == 1])
i <- i + 1
col <- vec[i]
}
result <- newt[, vec]
result
# 1 3
#1 0 0
#2 1 0
#3 0 0
#4 0 1
數據
newt <- matrix(c(0,1,0,0,1,0,0,1,0,0,0,1,0,1,0,1), nrow = 4, ncol = 4)
colnames(newt) <- c("1", "2", "3", "4")
rownames(newt) <- c("1", "2", "3", "4")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.