열을 만들고 수식으로 채우려고 하는데 오류가 발생합니다.더보기... For (j=3, j<=10, j=j+2,
ColLen=Length(Char(Column name (j)));
ColName=Left (Char(Column Name(j)),ColLen -5);
NewCol=Substr(ColName,6);
New Column(
"Delta: "||NewCol,
Numeric,
Formula (
(Column (j)- Column(j+1))
)
)
);
자동화 및 스크립팅Re: 열을 만들고 수식으로 채우려고 하는데 오류가 발생합니다."한 번" 작동하는 것 같습니다(값은 정상임). 그러나 (적어도 내 테스트 사례의 경우) 변형 #1은 나중에 수식을 열 때 오류를 보고합니다.

변종 # 6은 이 문제를 해결하는 것으로 보입니다.

그러나 Jmp가 닫히고 무엇을 잊어버리면 확실히 실패할 것입니다. dt 수단 ....
Re: 열을 만들고 수식으로 채우려고 하는데 오류가 발생합니다.열 대신 Column()으로 작업했습니다!
Re: 열을 만들고 수식으로 채우려고 하는데 오류가 발생합니다.열 대신 Column()으로 작업했습니다!
Re: 열을 만들고 수식으로 채우려고 하는데 오류가 발생합니다.작동 안함 
Re: 열을 만들고 수식으로 채우려고 하는데 오류가 발생합니다.조금 둘러본 후
- esp: #1이 예상한 결과를 제공하지 않는 이유가 궁금합니다.
dt = Open( "$Sample_data/iris.jmp" );
cols = {Sepal length,Sepal width, Petal length};
i = 2;
Eval( Eval Expr( dt << New Column( "new1", Formula( As Column( Expr( i ) ) ) ) ) ); //works but the formula is corrupted
Eval( Eval Expr( dt << New Column( "new2", Formula( As Column( Expr( Column(i) ) ) ) ) ) );
Eval( Eval Expr( dt << New Column( "new3", Formula( As Column( Expr( Char( cols[i] ) ) ) ))) );
Eval(Substitute(Expr(dt << New Column( "new4", Formula( __col__ ) )),Expr(__col__),Name Expr(As Column(i)) ));
Eval(Eval Expr(dt << New Column("new5", Formula(Expr(NameExpr(AsColumn(i)))))));
// new:
Eval( Eval Expr( dt << New Column( "new6", Formula( As Column( dt, Expr( i ) ) ) ) ) ); ... 둘러싸는 것이 필요하지 않은 새로운 변형을 찾았습니다. 이름 만료 작동하도록 *)
흥미로운 ...
*) 일하다 - Jmp가 닫히고 다시 시작될 때까지
Re: 열을 만들고 수식으로 채우려고 하는데 오류가 발생합니다.이 주제에 관한 좋은 게시물은 Eval Insert, Eval Expr, Parse 및 Substitute를 사용하여 한 표현식을 다른 표현식에 삽입 . 귀하의 경우 수식을 사용하려면 열 이름 대신 열 인덱스를 사용하므로 좀 더 복잡한 솔루션이 필요합니다(대부분 인덱스 대신 이름을 사용하는 것이 좋습니다). 대부분의 경우 Eval(EvalInsert())를 사용하지만 대체도 좋은 옵션입니다.
Names Default To Here(1);
dt = New Table("Untitled",
Add Rows(3),
Compress File When Saved(1),
New Column("Column 1", Numeric, "Continuous", Format("Best", 12), Set Values([1, 2, 3])),
New Column("Column 2", Numeric, "Continuous", Format("Best", 12), Set Values([2, 3, 4])),
New Column("Column 3", Numeric, "Continuous", Format("Best", 12), Set Values([3, 4, 5])),
New Column("Column 4", Numeric, "Continuous", Format("Best", 12), Set Values([4, 5, 6])),
New Column("Column 5", Numeric, "Continuous", Format("Best", 12), Set Values([6, 7, 8]))
);
For(j = 1, j < 5, j = j + 2,
// ColLen = Length(Char(Column Name(j)));
// ColName = Left(Char(Column Name(j)), ColLen - 6);
// NewCol = Substr(ColName, 6);
new_col = Word(2, Column(dt, j) << get name, " ");
Eval(Eval Expr(
New Column("Delta: " || new_col, Numeric, Formula(
Expr(NameExpr(AsColumn(j))) - Expr(NameExpr(AsColumn(j + 1)))
))
));
);
귀하가 관심을 가질만한 몇 가지 추가 기능/메시지: < < 열 이름 가져오기 , 단어() (스크립팅 색인에서 Words(), Item() 및 Items()도 검색), 각각() (JMP16+가 있는 경우)
Re: 열을 만들고 수식으로 채우려고 하는데 오류가 발생합니다.@mmarchandTSI , 나는 동의한다,
Formula(Column( ...
작동하지 않습니다.
대체 사용은 어떻습니까?
For( j = 3, j <= 10, j = j + 2,
ColLen = Length( Char( Column Name( j ) ) );
ColName = Left( Char( Column Name( j ) ), ColLen - 5 );
NewCol = Substr( ColName, 6 );
Eval(Substitute(Expr(
New Column( "Delta: " || NewCol, Numeric, Formula( (__colA__ - __colB__) ) );
),Expr(__colA__),Name Expr(As Column(j)),Expr(__colB__),Name Expr(As Column(j+1)) ))
);
Re: 열을 만들고 수식으로 채우려고 하는데 오류가 발생합니다.Column()은 열의 값이 아니라 열 자체에 대한 참조이기 때문입니다.추악한 방식으로 원하는 것을 수행하는 방법을 알고 있습니다.다음 스크립트는 누군가가 더 예쁜 솔루션을 게시할 때까지 그 동안 작동합니다.
Names Default To Here( 1 );
For( j = 3, j <= 10, j = j + 2,
ColLen = Length( Char( Column Name( j ) ) );
ColName = Left( Char( Column Name( j ) ), ColLen - 5 );
NewCol = Substr( ColName, 6 );
Eval(
Parse(
"New Column( \!"Delta: " || NewCol || "\!",
Numeric,
Formula(
:\!"" ||
(Column( j ) << Get Name) || "\!"n - :\!"" || (Column( j + 1 ) << Get Name) || "\!"n
))"
)
);
);
Re: 열을 만들고 수식으로 채우려고 하는데 오류가 발생합니다.JSL은 동적 범위를 사용합니다. 대부분의 프로그래밍 언어에서 사용하는 어휘 범위의 암시적 가정 하에서 작업하고 있다고 생각합니다.
JSL은 동적 범위를 사용하기 때문에 이름에 대한 범위 해상도는 제이 에서 이루어집니다 실행 시간 , 수식이 이름을 계산할 때 제이 더 이상 범위에 없으므로 오류가 발생합니다.
이 문제를 해결하기 위해 JMP가 열 공식 내에서 조회할 변수를 가지지 않도록 코드의 일부를 미리 평가할 수 있습니다.
For( j = 3, j <= 10, j = j + 2,
ColLen = Length( Char( Column Name( j ) ) );
ColName = Left( Char( Column Name( j ) ), ColLen - 5 );
NewCol = Substr( ColName, 6 );
Eval( Eval Expr(
New Column( "Delta: " || NewCol, Numeric, Formula( (Column( Expr( j ) ) - Column( Expr( j + 1 ) )) ) );
) )
);
Re: 열을 만들고 수식으로 채우려고 하는데 오류가 발생합니다.@CrownofTears , 원본 JSL 기반:
For( j = 3, j <= 10, j = j + 2,
ColLen = Length( Char( Column Name( j ) ) );
ColName = Left( Char( Column Name( j ) ), ColLen - 5 );
NewCol = Substr( ColName, 6 );
Eval(
Eval Expr(
New Column( "Delta: " || NewCol,
Numeric,
Formula( (As Column( Expr( Column Name( j ) ) ) - As Column( Expr( Column Name( j + 1 ) ) )) )
)
)
);
);나는 깨끗한 As Column("열 이름") 함수를 좋아하고 내 Eval( Parse(...) ) 솔루션처럼 추하지 않습니다.
Re: 열을 만들고 수식으로 채우려고 하는데 오류가 발생합니다.열 참조에서 행 값으로 이동하려면 단순히 [] .다음이 작동해야 합니다.
For( j = 3, j <= 10, j = j + 2,
ColLen = Length( Char( Column Name( j ) ) );
ColName = Left( Char( Column Name( j ) ), ColLen - 5 );
NewCol = Substr( ColName, 6 );
Eval( Eval Expr(
New Column( "Delta: " || NewCol, Numeric, Formula( (Column( Expr( j ) )[] - Column( Expr( j + 1 ) )[]) ) );
) )
);
Re: 열을 만들고 수식으로 채우려고 하는데 오류가 발생합니다.제가 지적했어야 했습니다. 열 참조에서 수식 내의 행 값으로 이동하려면 열 참조 뒤에 []를 넣으세요.
Column( 1)[] + Column( 2 )[]
Re: 열을 만들고 수식으로 채우려고 하는데 오류가 발생합니다.멋진 트릭 
Column(1)[]
대신에
Column(1)[row()]