R Language
R에 함수 작성하기
수색…
명명 된 함수
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
열이 벡터로 인쇄됩니다.