2013-06-23 4 views
0

훈련 및 테스트 세트에 대해 두 개의 희소 행렬이 있고, 두 행에서 모두 동일한 열을 제거해야합니다. 순간 나는 루프 그렇게하고 있어요,하지만 난 그것을 할 수있는 더 효율적인 방법이 확신 : 당신이 원하는 모든 것 같습니다 나에게두 희소 행렬의 열을 균등화하는 방법

# take out features in training set that are not in test 
    i<-0 
    for(feature in [email protected][2][[1]]){ 
    i<-i+1 
    if(!(feature %in% [email protected][2][[1]])){ 
     removerows<-c(removerows, i) 
    } 
    } 
    testmatrix<-testmatrix[,-removerows] 

# and vice versa... 
+2

우리가 경우에 도움이 쉬울 것을 : 당신은 두 행렬이 적용 원하기 때문에, 빠른 방법은 colnames 교차 찾기 위해 각 매트릭스에서 colnames의 벡터에 intersect을 사용하고 부분 집합이를 사용하는 것 'testmatrix'와'trainmatrix'를 가지고 있습니다 ... – alexwhan

답변

2

testmatrix의 열을 유지있다가 또한 trainmatrix에 나타나며 그 반대의 경우도 마찬가지입니다.

# keep will be a vector of colnames that appear in BOTH train and test matrices 
keep <- intersect(colnames(test) , colnames(train)) 

# Then subset on this vector 
testmatrix <- testmatrix[ , keep ] 
trainmatrix <- trainmatrix[ , keep ] 
+0

안녕하세요, 이것들은 Matrix 라이브러리 – paulusm

+0

@pablomo에서 sparse.model.matrix()를 사용하여 만든 dgCMatrix 타입이므로 위의 메소드가 'colnames ' –

관련 문제