R에서 do.call을 사용하는 방법(예제 3개)


R에서 do.call()을 사용하여 주어진 함수를 목록 전체에 적용할 수 있습니다.

이 함수는 다음 기본 구문을 사용합니다.

 do. call (function, list)

다음 예제에서는 do.call()을 실제로 사용하는 방법을 보여줍니다.

예 1: 합계와 함께 do.call() 사용

다음 코드는 do.call()을 사용하여 목록에 있는 값의 합계를 계산하는 방법을 보여줍니다.

 #create list
values_list <- list(A=c(1, 2, 3), B=c(7, 5, 10), C=c(9, 9, 2))

#calculate sum of values in list
do. call (sum, values_list)

[1] 48

목록에 있는 값의 합은 48 입니다.

단순히 목록에 sum()을 직접 사용하려고 하면 오류가 발생합니다.

 #create list
values_list <- list(A=c(1, 2, 3), B=c(7, 5, 10), C=c(9, 9, 2))

#attempt to sum values in list
sum(values_list)

Error in sum(values_list): invalid 'type' (list) of argument

예 2: 평균과 함께 do.call() 사용

다음 코드는 do.call()을 사용하여 목록에 있는 값의 평균을 계산하는 방법을 보여줍니다.

 #define argument to use in do.call
args <- list(1:20, na. rm = TRUE )

#calculate mean of values in list
do. call (mean, args)

[1] 10.5

목록에 있는 값의 평균은 10.5 입니다.

단순히 목록에 Mean()을 직접 사용하려고 하면 오류가 발생합니다.

 #attempt to calculate mean of values in list
mean(list(1:20), na. rm = TRUE )

[1] NA
Warning message:
In mean.default(list(1:20), na.rm = TRUE):
  argument is not numeric or logical: returning NA

예제 3: rbind와 함께 do.call() 사용

다음 코드는 do.call()을 사용하여 R에서 여러 데이터 프레임을 연결하는 방법을 보여줍니다.

 #create three data frames
df1 <- data. frame (team=c('A', 'B', 'C'),
                  dots=c(22, 27, 38))

df2 <- data. frame (team=c('D', 'E', 'F'),
                  dots=c(22, 14, 20))

df3 <- data. frame (team=c('G', 'H', 'I'),
                  dots=c(11, 15, 18))

#place three data frames into list
df_list <- list(df1, df2, df3)

#row bind together all three data frames
do. call (rbind, df_list)

  team points
1 to 22
2 B 27
3 C 38
4 D 22
5 E 14
6 F 20
7 G 11
8:15 a.m.
9 I 18

결과는 세 개의 데이터 프레임 각각의 행을 포함하는 데이터 프레임입니다.

목록과 함께 rbind()를 직접 사용하려고 하면 원하는 데이터 프레임을 수신할 수 없습니다.

 #create three data frames
df1 <- data. frame (team=c('A', 'B', 'C'),
                  dots=c(22, 27, 38))

df2 <- data. frame (team=c('D', 'E', 'F'),
                  dots=c(22, 14, 20))

df3 <- data. frame (team=c('G', 'H', 'I'),
                  dots=c(11, 15, 18))

#place three data frames into list
df_list <- list(df1, df2, df3)

#attmempt to row bind together all three data frames
rbind(df_list)

        [,1] [,2] [,3]  
df_list List,2 List,2 List,2

추가 리소스

다음 튜토리얼에서는 R에서 다른 일반적인 기능을 사용하는 방법을 설명합니다.

R에서 Paste 및 Paste0 함수를 사용하는 방법
R에서 replacement() 함수를 사용하는 방법
R에서 View() 함수를 사용하는 방법
R에서 rep() 함수를 사용하는 방법

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다