2016-11-10 9 views
0

R에서 varargs 문제를 두 번이나 세 번 발견했지만 문제가 예상보다 조금 복잡해 보입니다. 여기는다른 args의 유무에 따라 변수 arg가있는 R 함수

변수가있는 함수가 있지만 다른 변수, 플래그 종류를 소개하고 함수가 작동하는 방식을 선택하고 함수 자체에서 필요한 매개 변수를 선택하고 싶습니다. 즉, 입력의 수와 유형은 (플래그) 입력에 따라 다릅니다.

example = function(x,flag=1,y){ 
    if (flag) return(x) 
    else return(y) 
} 

이것은 잘 작동 :

확인은, 예 낫다. 요점은이 예제에서 매번 x와 y를 모두 지정해야한다는 것입니다. 대신 나는 깃발 = 1이면 x을 취하고 플래그 = 0이면 만 y을 취하는 함수를 원합니다. (이 어리석은 예제에서 그들은 기본적으로 두 개의 별개의 함수가 될 것이지만, 실제 경우에는 함수의 두 '부분'이 필요로하는 일부 계산을 수행 할 때 다른 (공통적 인) 인수가 있습니다.

미사용 인수의 값을 지정해도 결과가 변경되지는 않지만, 사용자가 즉시 읽을 수있는 기능을 원한다는 것을 알고 있으며 ' t는

어떤 도움 다음에 대한

+0

문제점을 이해하지 못합니다. "이 예제에서는 매번 x와 y를 모두 지정해야합니다."라는 말이 올바르지 않습니다. 'example (y = 2, flag = FALSE)'를 할 수 있습니다. – Roland

답변

0

무엇 주셔서 감사 기능에 의해 사용.

example = function(x,flag=1,y){ 
    if (flag && !missing(x)) return(x) 
    else if(!flag && !missing(y)) return(y) 
} 

플래그가 0 또는 제로가 아닌 경우는 확인합니다 플러스 인수가없는 경우는 확인합니다. 이 경우에이 함수가 NULL을 리턴 할 수 있기 때문에 이들 중 어느 것도 사실이 아닐 때 대소 문자를 처리 할 수 ​​있습니다.

+0

네, 실종()의 사용을 알고 이것이 실제로 해결책입니다.하지만 인수 목록을 읽는 것만으로는 어떤 인수가 필요하며 어떤 인수가 필요하지 않은지를 알 수 없다는 사실을 좋아하지 않습니다. – deltasun