首页 > 解决方案 > 在函数中使用函数

问题描述

使用 R 和 dplyr 包:

我有一个我写的函数(我们称之为x),它接受一个和一个数据框作为参数,并返回一个关于该列的摘要信息列表。现在我想创建一个新函数(我们称之为y),它将数据框作为参数并返回每列的信息列表(返回列表的列名,x函数返回的摘要信息。

我已经编写了 x 函数,虽然我很难使用 y 函数。我认为它应该看起来像这样:

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

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

标签: rdplyr

解决方案


让我们使用一个真实的数据集,即 的数字列iris

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

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

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

它有效吗?

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

对于你

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

这是你的意思吗?


推荐阅读