R에서 작성 연산자를 만들 수 있습니다.R의 상위 레벨 기능 - 공식 작성 연산자 또는 카레 기능이 있습니까?
`%c%` = function(x,y)function(...)x(y(...))
다음과 같이 사용합니다.
> numericNull = is.null %c% numeric
> numericNull(myVec)
[2] TRUE FALSE
하지만 이런 종류의 작업을 수행하는 공식 함수가 있는지 알고 싶습니다. 그리고 R에서 currying과 같은 다른 작업. 대개 이것은 내 코드에서 괄호, 함수 키워드 등의 수를 줄이는 것입니다.
내 카레 기능 :
> curry=function(...){
z1=z0=substitute(...);z1[1]=call("list");
function(...){do.call(as.character(z0[[1]]),
as.list(c(eval(z1),list(...))))}}
> p = curry(paste(collapse=""))
> p(letters[1:10])
[1] "abcdefghij"
이것은 특히 예를 들어 특히 좋습니다. 집합체 :
> df = data.frame(l=sample(1:3,10,rep=TRUE), t=letters[1:10])
> aggregate(df$t,df["l"],curry(paste(collapse="")) %c% toupper)
l x
1 1 ADG
2 2 BCH
3 3 EFIJ
다음 중 어떤 것보다 더 우아하고 편집 가능한 것으로 나타났습니다 :
> aggregate(df$t, df["l"], function(x)paste(collapse="",toupper(x)))
l x
1 1 ADG
2 2 BCH
3 3 EFIJ
기본적으로 알고 싶습니다.
내 카레 호출은 현재 카레 변수가 호출 된 환경에서 카디 변수를 바인딩하지 않지만 반환 된 함수가 호출되는 곳에서 바인딩됩니다. 나는 그 일을하고있다. –
더 나은 기본값을 가진 붙여 넣기 기능을 원한다면 왜 카레 시도가 필요할까요? 예를 들어 'paste0 <- function (x, ...) paste (toupper (x), collapse = "", ...)'그러면 aggregate (df $ t, df [ "l"], paste0)'를 호출 할 수있다. –
입니다. 더 많은 기능을 스택하려는 경우 더 복잡해지기 때문입니다. –