2014-11-24 2 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

내가

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

하지만 결과를 시도하기 때문에 foo는-4 열을 제거하려면 : 예를 들어

foo bar 
    4 5 

어떻게 해결할 수 있습니까?

답변

1

는 다음을 시도해보십시오

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

난 그냥 모두 현재 답변 명명 된 벡터에 아래로 행렬을 삭제할 것을 추가하고 싶습니다. 중복 된 열이 제거 된 후 함수 내에서 하위 집합을 사용하는 경우가 중요 할 수 있기 때문에 당신은 내가에만이를 불러 drop = FALSE

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

을 사용할 수 있습니다, 매트릭스를 유지하는 A를 들어

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

.