使用R和dplyr软件包:
我编写了一个函数(简称为 x ),该函数以列和数据框作为参数并返回有关该列的摘要信息的列表。现在,我想创建一个新函数(将其称为 y ),该函数将数据框作为参数并返回信息的列表对于每一列(返回列表的 key 是列名,而 values 是 x 函数返回的摘要信息)。
我已经编写了x函数,尽管我在使用y函数时遇到了困难。我认为应该看起来像这样:
y <- function(data_frame) {
lapply(data_frame, x)
}
但是我不知道从这里去哪里。我知道我需要使用* apply,但是我不知道如何编写y函数,以便将x函数应用于数据框中的每一列。有人可以帮助我以不同的方式编写我的y函数吗?
答案 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
那是你的意思吗?