행렬을 사용하여 목록을 구독하고 목록을 목록의 목록으로 형성할 수 있다면 정말 좋을 것 같습니다.
l = {"A", "B", "C", "D", "E", "F"};
ss = [1 2, 3 4, 5 6];
l[ss]; // I want this to come out as {{"A", "B"}, {"C", "D"}, {"E", "F"}};
안녕하세요. ,
좀 더 일반적인 소원이 있습니다. 그러나 쌓아 올리기로 결정했습니다. 함수가 행렬의 각 요소에 대한 appleid 인 것처럼 목록의 각 항목을 평가하는 함수에 대한 반복적 인 소원입니다.
가능한 경우
엘 [AsList (ss)]는 원하는 결과를 반환합니다.
LFunc ()를 자주 사용합니다. 기능이 내장 되었으면합니다. 내 버전의 함수에 스크립트가 첨부되어 있습니다. 81 행에서 / *를 제거하여
l = {"A", "B", "C", "D", "E", "F"};
ss = [1 2, 1 4, 5 2];
ssl = As List(ss);
rst = Lfunc(ssl,Expr(l[x]));
show(l, ssl,rst);
로그 출력
/*:
ssl = {{1, 2}, {1, 4}, {5, 2}};
rst = {{"A", "B"}, {"A", "D"}, {"E", "B"}};
블로그의 누군가가 관심을 가질 수있는 경우.
Lfunc = Function( {xList, fExpr/*ex. Expr(Contains(x,"h"))*/},
{x = {}, i = 1, errCode = 0, errStr = "\!NError bad argument", newExpr},
If( !Is List( xList ),
errCode = 1
);
If(
Type( Name Expr( fExpr ) ) == "Name",
//if Name then JMP does not recognize the function
tmp = Trim( Char( Name Expr( fExpr ) ) );
//extract the function and check if it is contained in the global namespace, if not error!
If( Namespace( "global" ) << Contains( Word( 1, tmp, ":(" ) ) == 0,
errCode = errCode + 2
);,
Type( Name Expr( fExpr ) ) != "Expression", errCode = errCode + 2
);
//catches typos, returns Name if not a valid function
//catches typos, returns Name if not a valid function
If( !Is Expr( Name Expr( fExpr ) ),
errCode = errCode + 2
); //catches syntax
If(
!errCode,
For( i = 1, i <= N Items( xList ), i++,
newExpr = Substitute( Name Expr( fExpr ), Expr( x ), xList[i] );
insert Into(x, "");
x[i] = Eval(Expr(Try( newExpr, Empty() )));
),
errCode == 1, Write( errStr || "(1) not a list \!N" ),
errCode == 2, Write( errStr || "(2) not a valid expression \!N" ),
errCode == 3, Write( errStr || "s (1) is not a list and (2) is not a valid expression \!N" )
);
x//return x
;
); //End Lfunc
l = {"A", "B", "C", "D", "E", "F"};
ss = [1 2, 1 4, 5 2];
ssl = As List(ss);
rst = Lfunc(ssl,Expr(l[x]));
show(l, ssl,rst);
Lfunc = Function( {xList, fExpr/*ex. Expr(Contains(x,"h"))*/},
{x = {}, i = 1, errCode = 0, errStr = "\!NError bad argument", newExpr},
If( !Is List( xList ),
errCode = 1
);
If(
Type( Name Expr( fExpr ) ) == "Name",
//if Name then JMP does not recognize the function
tmp = Trim( Char( Name Expr( fExpr ) ) );
//extract the function and check if it is contained in the global namespace, if not error!
If( Namespace( "global" ) << Contains( Word( 1, tmp, ":(" ) ) == 0,
errCode = errCode + 2
);,
Type( Name Expr( fExpr ) ) != "Expression", errCode = errCode + 2
);
//catches typos, returns Name if not a valid function
//catches typos, returns Name if not a valid function
If( !Is Expr( Name Expr( fExpr ) ),
errCode = errCode + 2
); //catches syntax
If(
!errCode,
For( i = 1, i <= N Items( xList ), i++,
newExpr = Substitute( Name Expr( fExpr ), Expr( x ), xList[i] );
insert Into(x, "");
x[i] = Eval(Expr(Try( newExpr, Empty() )));
),
errCode == 1, Write( errStr || "(1) not a list \!N" ),
errCode == 2, Write( errStr || "(2) not a valid expression \!N" ),
errCode == 3, Write( errStr || "s (1) is not a list and (2) is not a valid expression \!N" )
);
x//return x
;
); //End Lfunc
/*
//Usage & Test ...remove the slash asterisk and run in segments, results are in the log
//------------------------------------------------------------------------------
myList={"john", "harry", "huh","ah ha", "xyx", , "a", "h", 7, [1,7]};
/* returns a list of numeric values, one value for each item in the list
// n =>1st location of h, 0 => does not contain, Empty() => the item is not
// a valid argument for that expression.
// */
zz = Lfunc(myList,Expr(Contains(x,"h")));
myList={"john", "harry", "huh","ah ha", "xyx", , "a", "h"};
zz=Lfunc(myList, Expr(Uppercase(x)));
show(zz);
-----------------------------------------------------------------------------------------
/* returns a list of how many words are in each string
[] -> no occurrences
Empty() => the expression is not valid for that item.
*/
zz = Lfunc(mylist, expr(nitems(words(x))));
show(zz);
-----------------------------------------------------------------------------------------
/* This specified function requires numeric arguments
Empty() => the expression is not valid for that item.
A numeric function applied to a matrix returns a matrix
of the results applied on each element in the matrix.
Only the last 2 items are valid arguments for Log()
*/
myList={"john", "harry", "huh","ah ha", "xyx", , "a", "h", 7, [1,7]};
zz = Lfunc(mylist, expr(log(x)));
show(zz);
----------------Error Checking---------------------------------------------------------------
zz = Lfunc("oh johhny", Expr(Contains(x,"h")) ); //not a list
show(zz);
zz = Lfunc({"oh johhny"}, Expr(Contians(x,"h")) ); //type not a valid expr due to typo
show(zz);
zz = Lfunc("oh johhny", Expr(Contians(x,"h")) ); //not a list and not a valid expr
show(zz);
----- end test */