Как переименовать только несколько переменных в таблице 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 ответа

Решение

Согласно документации 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'}

таблица (Пользователь1, Пользователь2, Пользователь3(:,1), "Переменные", {"Пользователь1", "Пользователь2", "Пользователь3"})

Другие вопросы по тегам