r - 在函数中使用函数
问题描述
使用 R 和 dplyr 包:
我有一个我写的函数(我们称之为x),它接受一个列和一个数据框作为参数,并返回一个关于该列的摘要信息列表。现在我想创建一个新函数(我们称之为y),它将数据框作为参数并返回每列的信息列表(返回列表的键是列名,值是x函数返回的摘要信息。
我已经编写了 x 函数,虽然我很难使用 y 函数。我认为它应该看起来像这样:
y <- function(data_frame) {
lapply(data_frame, x)
}
但我不知道从这里去哪里。我知道我需要使用 *apply 但我不知道如何编写 y 函数,以便将 x 函数应用于我的数据框中的每一列。有人可以帮助我的 y 函数应该如何以不同的方式编写吗?
解决方案
让我们使用一个真实的数据集,即 的数字列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
这是你的意思吗?
推荐阅读
- docusignapi - eg-01-java-jwt 示例返回空正文
- reactjs - 当每个表单的结构都可以更改时,如何将表单类型数据传递给表单 HOC?
- python - 当 self 在同一范围/功能中预先引用时,self 仅在 eval 范围内
- angular - Angular 8 BehaviorSubject 无法更改所需的值
- flutter - How to change Font style in Html widget in Flutter?
- python - 如何在 tkinter 中加载屏幕?
- lua - Lua函数在给定数字时获得不同的数据类型
- php - 给定对象列表的PHP按键查找值
- javascript - 传递属性以反应组件为空
- flutter - 选择单选按钮到主屏幕后如何从警报对话框传递数据