많은 인수를 허용하는 함수를 가지고 있으며 더 쉽게 만들 수 있습니다. 인수가 목록으로 도입 된 다른 변수를 포함하기로 결정했습니다 (아래 예에서는 args
).함수 내에서 인수 덮어 쓰기
my_args
foo(0)
$x
[1] 0
$a
[1] 1
$b
[1] 2
$c
[1] 3
프로파일 인수를 기록
foo <- function(x, a, b, c, args, ...) {
ifelse(missing(a)==TRUE, a<-1, NA)
ifelse(missing(b)==TRUE, b<-2, NA)
ifelse(missing(c)==TRUE, c<-3, NA)
if(missing(args)==FALSE) {
for(i in 1:length(args)) {
tmp <- as.vector(args[[i]])
assign(names(args)[i], get("tmp"))
}
}
# Need something that overwrites "args" when the
# other arguments are specified
print(list(x=x, a=a, b=b, c=c))
}
그리고 기능 foo
는 다음과 같은 수 있습니다.
my_args <- list(a=1, b=1, c=1)
가 생산하는 :
foo(0, args=my_args)
$x
[1] 0
$a
[1] 1
$b
[1] 1
$c
[1] 1
내가 해당 인수가 함수에 지정된 때마다 args
에 값을 덮어 쓸 수있는 방법을 찾아야하고 싶습니다. 사용자가 동일한 인수에 대해 두 개의 서로 다른 값을 지정 했더라도 이것이 의미가있는 상황이 있습니다. 예를 들어
,
foo(0, args=my_args, c=3)
$x
[1] 0
$a
[1] 1
$b
[1] 1
$c
[1] 3
그리고 이런 것을 볼 때 my_args
에 기록 된 프로파일 내 c=3
.
대단히 감사합니다.
간단한 생각 (A/B/C 또는 인수) 모두가 당신의 선택에 따라 설정 한 후 비 누락하는 경우()를 확인하면 추가를 가졌다. –
@ joel.wilson'if (! (exists (names (args) [i])))'와'if (누락 (대체 (names (args) [i])))'성공하지 않고 여러 조건을 시험해 보았습니다. ,하지만 옵션 (a/b/c 또는 args) 모두를 보게 될 것입니다. 감사합니다 – JARO
'function (x, a = NA, b = NA, c = NA, args = list (a = a, b = b, c = c), ...)'을 정의하고'args '함수에서. – Roland