수색…


명명 된 함수

R은 함수로 가득 차 있지만, 모든 함수형 프로그래밍 언어 이지만, 필요한 정확한 함수는 Base 리소스에서 제공되지 않는 경우가 있습니다. 함수를 포함 하는 패키지설치할 수는 있지만 어쩌면 요구 사항이 너무 구체적이어서 미리 만들어진 함수가 적합하지 않을 수 있습니다. 그런 다음 자신 만의 옵션을 만들 수 있습니다.

함수는 매우 간단 할 수 있습니다. 꽤 무의미한 지점입니다. 그것은 논쟁을 취할 필요조차 없습니다 :

one <- function() { 1 }
one()
[1] 1

two <- function() { 1 + 1 }
two()
[1] 2

중괄호 ( { } 는 적절한 함수입니다. 한 줄에 모든 것을 넣을 수있는 한 꼭 필요한 것은 아니지만, 정리하는 것이 유용 할 수 있습니다.

함수는 매우 간단하면서도 매우 구체적 일 수 있습니다. 이 함수는 벡터 (이 예제에서는 vec )를 입력으로 받아 벡터의 길이 (이 경우 6)가있는 동일한 벡터를 벡터의 각 요소에서 뺀 값을 출력합니다.

vec <- 4:9
subtract.length <- function(x) { x - length(x) }
subtract.length(vec)
[1] -2 -1  0  1  2  3

length() 는 그 자체로 미리 제공되는 (즉, Base ) 함수임을 주목하십시오. 물론 다른 자체 제작 기능 내에서 이전에 자체 제작 된 함수를 사용할 수있을뿐 아니라 변수를 지정하고 여러 줄에 걸쳐 다른 작업을 수행 할 수 있습니다.

vec2 <- (4:7)/2

msdf <- function(x, multiplier=4) {
    mult <- x * multiplier
    subl <- subtract.length(x)
    data.frame(mult, subl)
}

msdf(vec2, 5)
  mult subl
1 10.0 -2.0
2 12.5 -1.5
3 15.0 -1.0
4 17.5 -0.5

multiplier=4 는 인수 multiplier 의 기본값이 4 인지 확인합니다. 함수 4 호출 할 때 값이 제공되지 않으면 사용할 인수입니다.

위는 이름 지정된 함수의 예입니다, 소위 그들이 이름 (주어졌다 때문에 단순히 one , two , subtract.length 등)

익명 함수

익명 함수는 이름에서 알 수 있듯이 이름이 지정되지 않았습니다. 이 기능은 함수가 더 큰 연산의 일부이지만 자체적으로 많은 부분을 차지하지 않을 때 유용 할 수 있습니다. 익명 함수를 자주 사용하는 경우는 *apply 되는 Base 함수 계열 내에 있습니다.

data.frame 각 열에 대한 평균 제곱근을 계산합니다.

df <- data.frame(first=5:9, second=(0:4)^2, third=-1:3)

apply(df, 2, function(x) { sqrt(sum(x^2)) })
    first    second     third 
15.968719 18.814888  3.872983 

행렬의 각 행에 대해 가장 작은 값에서부터 가장 큰 값에 이르는 순서 길이 순서를 만듭니다.

x <- sample(1:6, 12, replace=TRUE)
mat <- matrix(x, nrow=3)

apply(mat, 1, function(x) { seq(min(x), max(x)) })

익명의 함수는 자체적으로도 사용할 수 있습니다.

(function() { 1 })()
[1] 1

~에 해당합니다.

f <- function() { 1 })
f()
[1] 1

RStudio 코드 스 니펫

이것은 자체 정의 된 함수를 자주 사용하는 사람들을위한 작은 해킹 일뿐입니다.
"재미"RStudio IDE를 입력하고 Tab을 누릅니다.

여기에 이미지 설명을 입력하십시오.

결과는 새로운 기능의 골격이 될 것입니다.

name <- function(variables) {
        
}

하나는 자신의 스 니펫 템플릿을 쉽게 정의 할 수 있습니다.

name <- function(df, x, y) {
        require(tidyverse)
        out <- 
        return(out)
}

옵션은 Global Options -> Code 메뉴에서 Edit Snippets 입니다.

함수의 인수로 열 이름 전달

때로는 데이터 프레임의 열 이름을 함수에 전달하려고합니다. 그것들은 문자열로 제공 될 수 있고 [[ . R 콘솔에 선택된 변수의 기본 통계를 출력하는 다음 예제를 살펴 보겠습니다.

basic.stats <- function(dset, vars){
    for(i in 1:length(vars)){
        print(vars[i])
        print(summary(dset[[vars[i]]]))
    }
}

basic.stats(iris, c("Sepal.Length", "Petal.Width"))

위의 코드를 실행 한 결과, 선택된 변수의 이름과 기본 요약 통계 (최소, 1 분위수, 중앙값, 평균, 3 분위수 및 최대 값)가 R 콘솔에 인쇄됩니다. 코드 dset[[vars[i]]] 는 인수 vars 에서 i 번째 요소를 선택하고 선언 된 입력 데이터 세트 dset 에서 해당 열을 선택합니다. 예를 들어, iris[["Sepal.Length"]] 만을 선언하면 iris 데이터 세트의 Sepal.Length 열이 벡터로 인쇄됩니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow