2011-12-20 3 views
14

나는 이제 사용자가 그 인수를 지정하지 않았 음을 경우 플롯에 대한 몇 가지 기본 설정을 제공하고자하는 기능을피 인수 중복 (...)

somefun <- function(someparameters , ...) { plot(stuff, ...)} 

있습니다. (즉, xlab="").

기본 플롯 옵션 집합을 제공하지만 사용자가 이러한 인수를 무시할 수있게하려면 어떻게해야합니까? 동일한 인수가 두 번 입력되면 R은 여러 개의 실제 인수와 일치하는 형식 인수를 오류를 던집니다.

나는 내 기능

somefun <- function(someparameters, main, xlab, ylab, xlim....) 

을 통해 이러한 모든 옵션을 전달할 수 있습니다하지만 난 오히려 그렇게하지 않을 것이라고 알고 있습니다.

이것을 달성하기위한 몇 가지 간단한 해결책이 있습니까? 다음과 같이

+0

에'somefun <- 기능 (someparamenters, 주, xlab = "", ...) {플롯 (물건, xlab, ...)}'? 나는 그것이 당신이 원하는 바로 그 것이라고 생각했을 것입니다. – Henry

+0

깔끔한 것은 아닙니다. 이 코드를 패키지에 넣으면 매개 변수가 문서에 나타날 것입니다. – LostLin

+1

사용자가 문서에서 이러한 매개 변수를 원하므로 Henry의 제안이 더 바람직합니다. – Aaron

답변

19

modifyList를 사용보십시오 : 귀하의 반대는 무엇

f <- function(x, ...) { 
    defaults <- list(xlab = "x", ylab = "y") 
    args <- modifyList(defaults, list(x = x, ...)) 
    do.call("plot", args) 
} 
+0

답변 해 주셔서 감사합니다. 그러나 어떻게 목록을 매개 변수로 사용할 수 있습니까? 즉,'plot (1,2, args)'는이 경우에 확실히 작동하지 않을 것입니다. – LostLin

+1

@Ellipsis 그건 do.call의 마법입니다. 인수를리스트로 취합니다. '? do.call'도 참조하십시오. +1은'modifyList'에 대해 알지 못했습니다. 나는'match.call()'결과로 작업했을 것이다. –

+1

@ 줄임표, 나는 그것을 '플롯'예제를 제공하도록 수정했다. –