R 언어에는 다양한 개수의 인수를 사용할 수있는 함수를 정의하는 멋진 기능이 있습니다. 예를 들어, 함수 data.frame
는 여러 인수를 사용하며 각 인수는 결과 데이터 테이블의 열에 대한 데이터가됩니다. 사용법 예 :
> data.frame(letters=c("a", "b", "c"), numbers=c(1,2,3), notes=c("do", "re", "mi"))
letters numbers notes
1 a 1 do
2 b 2 re
3 c 3 mi
함수의 서명에는 다음과 같은 줄임표가 포함됩니다.
function (..., row.names = NULL, check.rows = FALSE, check.names = TRUE,
stringsAsFactors = default.stringsAsFactors())
{
[FUNCTION DEFINITION HERE]
}
비슷한 작업을 수행하는 함수를 작성하고 싶습니다. 여러 값을 가져 와서 단일 반환 값으로 통합하고 다른 처리를 수행합니다. 이를 위해 ...
함수 내에서 함수의 인수에서 "압축을 해제하는"방법을 찾아야 합니다. 나는 이것을하는 방법을 모른다. 의 함수 정의의 관련 라인 data.frame
입니다 object <- as.list(substitute(list(...)))[-1L]
내가 어떤 이해가되지 수있는.
어떻게 생략 부호를 함수의 서명에서 예를 들어 목록으로 변환 할 수 있습니까?
좀 더 구체적으로, get_list_from_ellipsis
아래 코드를 어떻게 작성할 수 있습니까?
my_ellipsis_function(...) {
input_list <- get_list_from_ellipsis(...)
output_list <- lapply(X=input_list, FUN=do_something_interesting)
return(output_list)
}
my_ellipsis_function(a=1:10,b=11:20,c=21:30)
편집하다
이를 수행하는 두 가지 가능한 방법이있는 것 같습니다. 그들은이다 as.list(substitute(list(...)))[-1L]
와 list(...)
. 그러나이 두 가지가 정확히 같은 것은 아닙니다. (차이점에 대해서는 답변의 예를 참조하십시오.) 누구든지 그들 사이의 실제적인 차이점과 사용해야 할 것이 무엇인지 말해 줄 수 있습니까?
list
and와c
function은 모두 이런 식으로 작동하지만 둘 다 프리미티브이므로 소스 코드를 쉽게 검사하여 작동 방식을 이해할 수 없습니다.