tableデータの変数名を割り当てる方法

table型において、変数名を明示的に宣言せずに、割り当てて、table型の変数を作成する方法を教えていただきたいです。
x1 = 100;
x2 = 200;
table( x1, evalin( 'base' , "x2" ) )
ans = 1×2 table
x1 Var2 ___ ____ 100 200
この状態だと、tableの変数の中の「X2」の変数名は「Var2」となります。
「X2」の変数名を「X2」のままtable型に格納したい場合はどうすればいいでしょうか。
本来は
table( x1, x2 )
ans = 1×2 table
x1 x2 ___ ___ 100 200
とすればいいですが、変数名を自動化で割り当てたいと思っています。
何かいい方法があればご教示いただけますと助かります。
それとも、table型は明示的に変数名を宣言しないと、その変数名で値を格納できないのでしょうか。

 Accepted Answer

Hernia Baby
Hernia Baby on 21 Mar 2023
x2の変数名を自動で割り当てたいということですね。
Variablenameオプションはいかがでしょうか?
例えば a, b を x1, x2 のようにしたいと考えたとします。
a = 100;
b = 200;
vnames = ["x1","x2"];
table(a,b,'VariableNames',vnames)
ans = 1×2 table
x1 x2 ___ ___ 100 200

3 Comments

多分、 x1, x2 の様な名前を明示的に指定するのではなく、既存の変数名をTableの変数名にしたいのだと思います。以前@Hernia Babyさんが「関数に与える引数の、関数内の使用について」で回答された inputname 関数が使えないかなと思ったのですが、一度に一つしか出力出来ない様なので...🤔
a = 100; b = 200; c = 300; d = 400; e = 500;
T = table_with_argnames(a,b,c,d,e)
T = 1×5 table
a b c d e ___ ___ ___ ___ ___ 100 200 300 400 500
% 可変個数の変数を受け取って、当該変数名を割り当てる関数のアイデア
function T = table_with_argnames(varargin)
T = table;
for k = 1:nargin
T = [T table(varargin{k},'VariableNames',{inputname(k)})];
end
end
% エラーチェックなど甘いので、適宜追記等してから使ってください
Atsushi Ueno
Atsushi Ueno on 21 Mar 2023
Edited: Atsushi Ueno on 21 Mar 2023
おそらく自動化スクリプトが変数名の情報を持っていて下記の様に設定するのだと思いますが、
table( x1, evalin( 'base' , "x2" ) )
evalin 関数でなくても、eval 関数に直接変数名を書いても良いのではないかとも思いました。
eval(['table(',varname1,',',varname2,');']); % やり方次第で可変個数にもできる
s
s on 21 Mar 2023
ご回答ありがとうございます。おかげさまで解決できました。感謝いたします。

Sign in to comment.

More Answers (0)

Products

Release

R2023a

Tags

Asked:

s
s
on 21 Mar 2023

Commented:

s
s
on 21 Mar 2023

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!