在函数中使用函数

时间:2020-05-04 22:38:06

标签: r dplyr

使用R和dplyr软件包:

我编写了一个函数(简称为 x ),该函数以数据框作为参数并返回有关该列的摘要信息的列表。现在,我想创建一个新函数(将其称为 y ),该函数将数据框作为参数并返回信息的列表对于每一列(返回列表的 key 是列名,而 values x 函数返回的摘要信息)。

我已经编写了x函数,尽管我在使用y函数时遇到了困难。我认为应该看起来像这样:

y <- function(data_frame) {
  lapply(data_frame, x)
}

但是我不知道从这里去哪里。我知道我需要使用* apply,但是我不知道如何编写y函数,以便将x函数应用于数据框中的每一列。有人可以帮助我以不同的方式编写我的y函数吗?

1 个答案:

答案 0 :(得分:1)

让我们使用真实的数据集iris的数字列。

@library(tidyverse)
myIris <- iris %>% 
  select(- "Species")

对于您的 x 函数,请使用mean

x <- function(df, col){
  df[[col]] %>% mean()
}

行得通吗?

x(myIris, "Sepal.Length")
[1] 5.843333

对于您的 y

y <- function(df){
  tibble(KEYS = names(df)) %>% 
    mutate(VALUES = map_dbl(KEYS, ~ x(df, .x)))
}

试试看

y(myIris)
# A tibble: 4 x 2
  KEYS         VALUES
  <chr>         <dbl>
1 Sepal.Length   5.84
2 Sepal.Width    3.06
3 Petal.Length   3.76
4 Petal.Width    1.20

那是你的意思吗?