大家好,
我有一個包含多列的數據表,其中一些我想加在一起。 作為腳本的一部分,我選擇了一些列,將列名存儲在列表中,然後希望使用“求和”功能添加選定的列。
為此,我需要構建一個字符串 ":DATA1, :DATA2, :DATA3" 並將其解析為一列。
New Column( "Addition", Numeric, Continuous, Formula( Parse( Sum( :DATA1, :DATA2, :DATA3 ) ) ) );
我正在使用的代碼片段如下:
New Column( "Addition", Numeric, Continuous, Formula( Parse( Sum( :DATA1, :DATA2, :DATA3 ) ) ) );
list = {"DATA1", "DATA2", "DATA3"};
For( i = 1, i <= N Items( list ), i++,
If(
i == 1, string = ":" || Char( Eval( list[Eval( i )] ) ),
i > 1, string = string || "," || ":" || Char( Eval( list[Eval( i )] ) )
)
);
Parse( string );
在執行時,我收到以下錯誤:
意外的“,”。 也許缺少“;”或者 ”,”。
第 1 行第 7 列::DATA1►,:DATA2,:DATA3
被忽略的剩余文本是
,:數據2,:數據3
:DATA1
有什麼我想念的嗎?
提前致謝!
感謝您的幫助和解釋! 腳本中的“另一個數據”列正是我想要的。 “另一個數據”列似乎返回了一個空單元格,並顯示錯誤“需要參數是標量、矩陣或列表..”。 我會試著弄清楚為什麼會這樣。
查看它返回的字符串。
":DATA1,:DATA2,:DATA3"
嘗試在沒有引號的情況下運行,你會得到同樣的結果。
如果你有列名作為字符串,你可以做這樣的事情。
Names default to here(1);
dt = New Table( "Example",
Add Rows( 1 ),
New Column( "Data1", Set Values( [1] )),
New Column( "Data2", Set Values( [2] )),
New Column( "Data3", Set Values( [3] )),
);
// list of column names as strings
list = dt << Get Column Names("string"); // {"Data1", "Data2", "Data3"}
SumExpr = Expr(Sum());
for(i=1, i<=nitems(list), i++,
insert into(SumExpr, Column(dt, list[i]));
);
// see what the sumExpr looks like
show(nameexpr(sumExpr));
// then you have to do some substitute in order to actually get it to run
just_for_show = EvalExpr(
dt << New Column("Another Data", Formula(Expr(nameexpr(SumExpr))));
);
show(nameexpr(just_for_show));
just_for_show();// this will actually run the expression you just created.
// or you could use the list in Sum Directly.
// list of column names as references
list = dt << Get Column Names();
list=list[1::3];
// can do a list directly in Sum()
// should still substitute it in so it's no dependant on then list variable
just_for_show =Substitute(
Expr(
dt << new Column("Yet Another Data", Formula(Sum(DV_LIST)))
),
Expr(DV_LIST), list
);
show(nameexpr(just_for_show));
just_for_show(); // actually evaluates again.