2014-11-24 74 views
0

我在R腳本中有矩陣,我想刪除R中與矩陣匹配的矩陣中的列。刪除矩陣中與R中列名匹配的列

例如:

A <- matrix(c(4,5,4,4), nrow=1) 
dimnames(A)= list(c("row1"),c("foo","bar","alfa","foo")) 

    foo bar alfa foo 
row1 4 5 4 4 

我想刪除列富-4,因爲與之相匹配的標籤,但不是列α-4

我嘗試

duplicated.columns <- duplicated(t(A)) 
A <- A[, !duplicated.columns] 

但結果是

foo bar 
    4 5 

我該如何解決這個問題?

回答

1

嘗試以下操作:

A[,!duplicated(colnames(A))] 
3

我只是想補充一點,無論是目前的答案落下矩陣到一個名爲向量。

class(A[, unique(colnames(A))]) 
# [1] "numeric" 
class(A[, !duplicated(colnames(A))]) 
# [1] "numeric" 

A重複列被刪除後仍然是一個矩陣,你可以使用drop = FALSE

class(A[, unique(colnames(A)), drop = FALSE]) 
# [1] "matrix" 
class(A[, !duplicated(colnames(A)), drop = FALSE]) 
# [1] "matrix" 

我只提這件事,因爲它可能會,如果您使用的是函數內的一個子集是重要的。

相關問題