2016-07-31 3 views
1

MATLAB에서 다음과 같은 문제가 있습니다. 내가 쉽게테이블을 결합 할 때 유사한 행 유지 MATLAB

f1n = join(f1,f2,'Keys','RowNames'); 

f1f2에 가입 할 수 있지만

f1 [4757*256] table 
f2 [4757*512] table 
f3 [14073*1024] table 

나는 f3

f3n = join(f1,f3,'Keys','RowNames'); 

에, f1와 동일한 기능을 수행 할 수없고, 나는 다음과 같은 오류받을 :

Both tables must have the same row names when using 
them as the key. 
Error in fuse_LL_GenreTag_features (line 33) 
F3new = join(f1,f3,'Keys','RowNames'); 

f3은 대부분의 행 이름이 f1이지만 반드시 전부는 아닙니다. 사실상 두 테이블에서 공통적 인 행을 유지하는 것이 이상적입니다. 어떻게 이것이 당신의 의견으로 이루어질 수 있습니까? 귀하의 의견

답변

0

에 대한

덕분만큼 두 번째의 부분 집합 첫 번째 테이블 행 이름으로, 당신은 일반적인 행이 새 테이블을 얻을 것이다.

From MATLAB docs :

If you specify the value 'RowNames', then join uses the row names of A and row names of B as keys. In this case, there must be a row in B for every row in A.

이 테이블을 고려

f1 = array2table(zeros(3,4),'RowNames',{'a','b','c'}); 
f2 = array2table(zeros(3,5),'RowNames',{'a','d','c'}); 
f3 = array2table(zeros(5,5),'RowNames',{'a','e','c','d','b'}); 

다음 첫 번째 테이블은 두 번째의 부분 집합이기 때문에, 작동 조인 그러나이

f1n = join(f1,f3,'Keys','RowNames'); 
f2n = join(f2,f3,'Keys','RowNames'); 

가 작동하지 않습니다 :

f1n = join(f3,f1,'Keys','RowNames'); 
f2n = join(f3,f2,'Keys','RowNames'); 

오류를 반환합니다 : "두 테이블 모두 키를 사용할 때 같은 행 이름이어야합니다".

따라서, 귀하의 경우에 나는 테이블의 순서가 작동해야 내리고 있다고 생각 :

f3n = join(f3,f1,'Keys','RowNames'); 
+0

@yas의 yasi는이 방법으로 문제가 해결입니까? 그렇지 않다면, 왜? – EBH