1

私は現在、Matlab と R の両方で同じツールをプログラミングし、両方のソフトウェア オプションを比較する必要があるプロジェクトに取り組んでいます。私はRで始めて、今コードをMatlabに翻訳していますが、今は最も重要な部分で立ち往生しています. 分析の実行後にツールが作成する出力ファイル。基本的に、私のツールはn時間をループする分析を行い、各ループの後、出力テーブルに入る多くの変数を取得します。したがって、より明確にするために、各ループの後に変数を取得します。

A = 123

B = 456

C = 'string1'

D = 'string2'

E = 789

各ループの後に各変数の値が変更されます。これが問題の原因であるため、変数が数値と文字列の両方であることを明確にしたいだけです。

R各ループの後に私がすることは次のとおりです。

outp <- cbind(A,B,C,D,E)

水平に配置された 1 つのセルに各変数を含むデータ フレームを作成し、後で各ループの結果を新しいデータ フレームに垂直に追加します。

outp2 <- rbind(outp2,outp)

そのため、最終的に、各ループの後に各変数の値を含むoutp2A、B、C、D、E 列と行を含むデータ フレーム ( ) を取得します。nしたがって、ループ プロセスの最後に関数を使用して、数値列と文字列列の両方を含むwrite.csv出力ファイルを作成できます。outp2

Matlab でこれを実行しようとしましたが、R で行っているのと同じ方法でデータを結合できる関数が見つかりません。括弧を使用'[]'すると、数値の種類の変数しか結合できないためです。基本的に私の質問は、Rで行っていることをMatlabで複製するにはどうすればよいですか?

説明が少し難しいことがわかりました。

4

3 に答える 3

0

出力をセル配列に追加できます。最初に中括弧を使用してセル形式 (空{}またはデータを含む{...}) を宣言し、次に角括弧を使用し[...]て出力を連結します (を使用して他の行の後に 1 行;)。

out_array = {};        %initialize empty

%vertical concatenation with ";"
for ii = 1:3
    out_array = [out_array; {123, 456, 'string1', 'string2', 789}];
end

これは与える

out_array =

[123]    [456]    'string1'    'string2'    [789]
[123]    [456]    'string1'    'string2'    [789]
[123]    [456]    'string1'    'string2'    [789]
于 2013-09-19T10:48:57.590 に答える
0

前に言ったように、セル配列を作成するには中かっこを使用します。A、B、C、D、および E がテーブル ヘッダーであり、それらの下にあるデータが既にあるので、次のようにします。

outp = { A , B , C , D , E };
# This next step is only to have some data...
outp2 = magic(5);
outp2 = num2cell(outp2);
output = [ outp ; outp2 ]

output = 

    [123]    [456]    'string1'    'string2'    [789]
    [ 17]    [ 24]    [      1]    [      8]    [ 15]
    [ 23]    [  5]    [      7]    [     14]    [ 16]
    [  4]    [  6]    [     13]    [     20]    [ 22]
    [ 10]    [ 12]    [     19]    [     21]    [  3]
    [ 11]    [ 18]    [     25]    [      2]    [  9]
于 2013-09-19T13:18:14.417 に答える
0

これで問題が解決するかどうかはわかりませんが、Matlabでは次のようなことができます

oupt = {123, 456, 'string1', 'string2', 789}

角かっこの代わりに中かっこを使用してください。

于 2013-09-19T10:20:37.300 に答える