표현식 목록다음과 같은 목록을 만들고 싶습니다.
LL = {parm1 = "x", 값1 = 5, parm2 = "y", 값2 = 3, ...}
길이가 다를 수 있으므로 루프에서 수행하고 변수 이름에 루프 인덱스를 사용하려고 합니다.
하지만 그 용어(예: parm1)를 만드는 데 어려움을 겪고 있습니다.
이 작업을 수행하는 가장 좋은 방법은 무엇입니까?
Re: 표현식 목록다른 방법이 있습니다. 최종 솔루션과 유사합니다.
// LL = {parm1 = "x", value1 = 5, parm2 = "y", value2 = 3, ...}
// Assume parameters and value labels are sequential
parm_list = {"x", "y", "z"};
value_list = {5, 3, 1};
pval_list = {};
for (i = 1, i <= nitems(parm_list), i++,
one_parm = evalinsert("\[parm^i^ = "^parm_list[i]^"]\");
one_val = evalinsert("\[value^i^ = ^value_list[i]^]\");
insertinto(pval_list, parse(one_parm));
insertinto(pval_list, parse(one_val));
);
pval_list;Re: 표현식 목록원하는 경우 연관 배열 또는 중첩된 연관 배열 목록을 작성할 수 있는 것처럼 보입니다. 그러면 데이터 구조를 생성하기 위해 문자열을 구문 분석할 필요가 없으며 읽기가 훨씬 더 쉽다는 것을 알았습니다(변수를 생성하기 위해 문자열을 구문 분석할 때 변수를 보기 위해 실행하거나 마우스를 가져가는 기능을 잃게 됩니다. )
Names Default to here(1);
testparam1 = 1;
fitparam1 = 2;
Rsq1 = 3;
testparam2 = 4;
fitparam2 = 5;
Rsq2 = 6;
//list of associative arrays
Laa = {};
//param1 insert
insert into(Laa, associative array({"TestParam", "FitParam", "Rsq"}, Evallist({testparam1, fitparam1, Rsq1})) );
//param2 insert
insert into(Laa, associative array({"TestParam", "FitParam", "Rsq"}, Evallist({testparam2, fitparam2, Rsq2})) );
show(Laa[1]["TestParam"], Laa[2]["TestParam"]);
//nested associative arrays
Naa = associative array();
//param1 insert
Naa["name1"] = associative array({"TestParam", "FitParam", "Rsq"}, Evallist({testparam1, fitparam1, Rsq1}));
//param2 insert
Naa["name2"] = associative array({"TestParam", "FitParam", "Rsq"}, Evallist({testparam2, fitparam2, Rsq2}));
show(Naa["name1"]["FitParam"], Naa["name2"]["FitParam"]);
보고
Laa[1]["테스트 매개변수"] = 1;
Laa[2]["테스트 매개변수"] = 4;
나["이름1"]["핏파람"] = 2;
나["이름2"]["핏파람"] = 5;
중첩의 이점은 순서가 변경되고 위치가 중요할 것으로 예상하는 경우에만 가능합니다.
Re: 표현식 목록나는 어느 것이 가장 좋은지 평가하지 않을 것입니다.그러나 나는 두 가지 예가 모두 어떻게 작동하는지 이해하는 데 유용하다는 것을 알았습니다.
결국 내 코드는 다음과 같았습니다.참고: 여기에서 몇 가지를 정의하지 않기 때문에 이것은 그대로 실행되지 않습니다.
이것은 인덱스 k가 있는 루프에 있습니다.목록 목록은 모든 결과를 저장합니다.
LList = {};
에 집어 넣다 (엘리스트, 구문 분석 ( "테스트파람" || 숯 (카)|| "=\!"" ||모드[k]|| "\!"" )); // 테스트 매개변수 이름
에 집어 넣다 (엘리스트, 구문 분석 ( "핏파람" || 숯 (카)|| "=\!"" ||dtStats[ 1 , 1 ]|| "\!"" )); // 매개변수 이름 맞추기
에 집어 넣다 (엘리스트, 구문 분석 ( "리스크" || 숯 (카)|| "=" || 숯 (dtStats[ 1 , 삼 ]))); // 제곱
Re: 표현식 목록"가장 좋은 방법은?" JMP 커뮤니티에서 싸움을 시작하려고 하십니까?
이 문제를 해결하는 방법은 여러 가지가 있습니다. 어떤 방법이 가장 좋은지에 대한 결정은 몇 가지 기준에 따라 다릅니다. 다음은 Jim의 솔루션과 다르지만 반드시 더 나은 것은 아닌 또 다른 후보 솔루션입니다.
Names Default To Here( 1 );
// List the variable names
name list = { "Cool", "Awesome", "Bad" };
// List the variable values
value list = { 1, 2, 3 };
// Prepare an empty container for assignments
name value list = {};
// Make the list of assignments
For( i = 1, i <= N Items( name list ), i++,
// Start with function with no arguments
assign expr = Expr( Assign() );
// Add first argument
Insert Into( assign expr, name list[i] );
// Add second argument
Insert Into( assign expr, value list[i] );
// Add function to assignment list
Insert Into( name value list, Name Expr( assign expr ) );
);
Show( name value list );
이제 선택이 가능합니다. (나는 당신에게 또 다른 순간이 있을 것이라고 장담합니다.) 당신은 선택합니다.
Re: 표현식 목록다음은 목록을 생성하는 유사한 코드입니다.
Names Default To Here( 1 );
dt = New Table( "Untitled 36", Add Rows( 3 ),
New Column( "Column 1", Character, "Nominal",
Set Values( {"1", "2", "3"} ) ) );
NamesList = {"Cool", "Awsome", "Bad"};
ValuesList = Column( dt, 1 ) << get values;
NamesValuesList = {};
// Build the Value Labels List
For( i = 1, i <= N Items( NamesList ), i++,
Insert Into( namesvalueslist,
Parse( ValuesList[i] || " = \!"" || NamesList[i] || "\!"" ) )
);