簡體   English   中英

如何根據 R 中的行值刪除矩陣的列?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM