안녕하세요 여러분,
함수 내부의 목록에 함수가 호출될 때마다 새 값(변수 값)을 추가하려고 합니다.
무엇을 시도해도 목록은 아무런 가치도 얻지 못합니다.
어떤 조언이 있나요?
코드 예제 추가
새 열을 반환한 다음 함수 호출 외부에 추가하는 것이 더 나은 생각이라고 생각합니다.
Names Default To Here(1);
dt = Open("\\VMSPFSFSLC001\F28_PLI\SQL\FE SQL\Data\Oxide .CSV");
op_list = List();
add_new_operation = Function({dt, col_name, op, PLmin, PLmax}, {Default Local},
new_col = dt << New Column(col_name,
Character,
"Nominal",
Formula(
If(/*some conditions for the value*/
)
)
);
return(new_col);
);
sticol = add_new_operation(dt, "STI", 201405, 80, 2000);
Insert Into(op_list, sticol);
Show(op_list);
// This should also work
// Insert into(op_list, add_new_operation(dt, "STI", 201405, 80, 2000));
전체 예
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
op_list = {};
add_new_operation = Function({dt, col_name}, {Default Local},
new_col = dt << New Column(col_name,
Character,
"Nominal",
Formula(
col_name
)
);
return(new_col);
);
Show(op_list); // op_list = {};
Insert into(op_list, add_new_operation(dt, "name"));
Insert into(op_list, add_new_operation(dt, "age"));
Show(op_list); // op_list = {Column("name 2"), Column("age 2")};
그리고 함수 밖에서 생성된 리스트에 정말로 삽입하고 싶다면, 함수에서 {Default Local}을 제거하세요(다른 방법도 있습니다). 하지만 저는 이 방법을 추천하지 않습니다. 그 이유 중 하나는 이제 함수가 호출되기 전에 항상 op_list를 생성해야 하기 때문입니다.
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
op_list = {};
add_new_operation = Function({dt, col_name},
new_col = dt << New Column(col_name,
Character,
"Nominal",
Formula(
col_name
)
);
Insert Into(op_list, new_col);
);
Show(op_list); // op_list = {};
add_new_operation(dt, "name");
add_new_operation(dt, "age");
Show(op_list); // op_list = {Column("name 2"), Column("age 2")};