2016-12-06 277 views
2

我想生成一個表,但想設置變量名只有一個變量,但希望所有其他變量保持他們的名字。如何在MATLAB表中只重新命名幾個變量?

例, 說我有這樣的數據:

User1 = rand(5,1); 
User2 = rand(5,1); 
User3 = rand(5,2); 

我現在可以使用使表:

table(User1 , User2 , User3(:,1)) 

這給了我這樣的:

ans = 

User1  User2  Var3 
________ ________ ________ 

0.55229 0.049533  0.14651 
0.62988  0.48957  0.18907 
0.031991  0.19251 0.042652 
0.61471  0.12308  0.6352 
0.36241  0.20549  0.28187 

我想得到這樣的:

ans = 

User1  User2  User3 
________ ________ ________ 

0.55229 0.049533  0.14651 
0.62988  0.48957  0.18907 
0.031991  0.19251 0.042652 
0.61471  0.12308  0.6352 
0.36241  0.20549  0.28187 

我試着這樣做:

table(User1 , User2 , User3(:,1), 'VariableNames',{'','','User3'}) 

但是這給了錯誤:

Error using setVarNames (line 33) 
The VariableNames property must be a cell array, with each element containing one nonempty 
string. 

Error in table (line 305) 
      t = setVarNames(t,vnames); % error if invalid, duplicate, or empty 

如何解決我的問題與MATLAB 2014B?

對於我的數據,d被生成,並且表被製成一個循環,我想保留d的所有值。如果這事很重要。

+2

參見:改變一個變量名稱](https://www.mathworks.com/help/matlab/matlab_prog/modify-units-descriptions-and-table-variable-names.html#zmw57dd0e25360 )或[訪問和修改屬性](https://www.mathworks.com/help/matlab/ref/tableproperties.html) – excaza

回答

3

每MATLAB的documentation for the table data type,你可以通過修改完成這個表格的VariableNames property

使用示例表T

T = table(rand(3, 1), rand(3, 1), rand(3, 1)); 

你可以索引變量數值:

T.Properties.VariableNames{2} = 'Middle_Column' 
T.Properties.VariableNames(2:3) = {'Middle_Column', 'End_Column'} 

或者你可以使用table的隱含字符串比較索引一個字符串:

T.Properties.VariableNames{'Var2'} = 'Middle_Column' 
T.Properties.VariableNames({'Var2', 'Var3'}) = {'Middle_Column', 'End_Column'} 

或者你可以重新分配整個事情:

T.Properties.VariableNames = {'Start_Column', 'Middle_Column', 'End_Column'} 
-2

table(User1 , User2 , User3(:,1),'VariableNames', {'User1', 'User2', 'User3'})

+0

這不是我想要的。你基本上重命名所有的變量。我只想重命名一個變量,但無論如何感謝 – EkEhsaas