Применение нескольких функций в одной функции к DataFrame - PullRequest
1 голос
/ 28 апреля 2020

В настоящее время я написал этот код

X1<-c(8.7, 14.3, 18.9, 19.0, 20.5, 14.7, 18.8, 37.3, 12.6, 25.7)
X2<-c(0.3, 0.9, 1.8, 0.8, 0.9, 1.1, 2.5, 2.7, 1.3, 3.4)
X3<-c(3.1, 7.4, 9.0, 9.4, 8.3, 7.6, 12.6, 18.1, 5.9, 15.9)

df<-data.frame(x1=X1,x2=X2,x3=X3)

multi.fun <- function(x) {
  c(media = mean(x), desv.tip = sd(x), fischer = sum((x-mean(x))^3)/(nrow(df)*(sd(x))^3))
}

sapply(df, multi.fun)

, с помощью которого я получаю:

                 x1        x2        x3
media    19.0500000 1.5700000 9.7300000
desv.tip  7.9560250 0.9967168 4.5660705
fischer   0.9549109 0.5209099 0.4954127

Мой вопрос заключается в том, могу ли я встроить функцию 'sapply' в ' multi.fun 'функция, таким образом, чтобы получить одну функцию?

1 Ответ

0 голосов
/ 28 апреля 2020

Мы можем поместить sapply внутри функции и передать набор данных в качестве аргумента

multi.fun <- function(dat) {
  sapply(dat, function(x) c(media = mean(x), desv.tip = sd(x), 
           fischer = sum((x-mean(x))^3)/(nrow(dat)*(sd(x))^3)))
  }

multi.fun(df)
#                 x1        x2        x3
#media    19.0500000 1.5700000 9.7300000
#desv.tip  7.9560250 0.9967168 4.5660705
#fischer   0.9549109 0.5209099 0.4954127
...