3

テーブルを生成したいが、1 つの変数だけの変数名を設定したいが、他のすべての変数はその名前を保持したい。

例として、次のデータがあるとします。

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。これが何とかなるなら。

4

2 に答える 2

5

データ型に関するMATLAB のドキュメントにtableよると、テーブルのVariableNamesプロパティを変更することでこれを実現できます。

例のテーブルを使用する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'}
于 2016-12-06T18:07:03.807 に答える
-3

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

于 2016-12-06T17:43:52.233 に答える