将单个函数内的多个函数应用于DataFrame

问题描述 投票:0回答:1

我目前已编写此代码

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'函数中,从而获得单个函数?

r function dataframe sapply
1个回答
0
投票

我们可以将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
© www.soinside.com 2019 - 2024. All rights reserved.