微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

嵌套/分组小标题:当函数有多个参数时,在 mutate 中使用 purrr:map

如何解决嵌套/分组小标题:当函数有多个参数时,在 mutate 中使用 purrr:map

我想使用 mutate 将函数应用于嵌套/分组数据集的每组。这个例子应该有助于解释目标。需要有关如何正确编码的建议。

制作一个分组/嵌套的假数据集。

data(kidney)
grp_kidney <- kidney %>% group_by(sex) %>% nest()

具有以下结构:

> grp_kidney
# A tibble: 2 x 2
# Groups:   sex [2]
    sex data             
  <dbl> <list>           
1     1 <tibble [20 × 6]>
2     2 <tibble [56 × 6]>

接下来我们创建一个函数来拟合这些数据的生存曲线。

sFit <- function(df,ci = 'none'){
  survfit(Surv(time,status) ~ age,data = df,conf.type = ci)
}

最后,我们将此函数应用到分组数据的每一行,并使用 purrr::map 和 dplyr::mutate 将结果保存为分组标题中的新列。

grp_kidney <- grp_kidney %>%
  mutate(plain = map(grp_kidney$data,sFit,ci = 'plain')) %>%
  mutate(loglog = map(grp_kidney$data,ci = 'log-log'))

Error: Problem with `mutate()` input `plain`.
x Input `plain` can't be recycled to size 1.
ℹ Input `plain` is `map(grp_kidney$data,ci = "plain")`.
ℹ Input `plain` must be size 1,not 2.
ℹ The error occurred in group 1: sex = 1.
Run `rlang::last_error()` to see where the error occurred.

我希望在这个例子中得到的结果是一个嵌套的 data.frame 具有以下特征:

  1. 每个分组变量元素占一行(本例中为 2 行)
  2. 第 1 列:性别 - 在此示例中为 1 或 2
  3. 第 2 列:数据 - 每个组的 data.frame
  4. 第 3 列:普通 - 带有普通 CI 的 survfit 模型的输出
  5. 第 4 列:loglog - 带有 log-log CI 的 survfit 模型的输出

如果我创建两个函数一个用于“plain”,一个用于“log-log”,我就可以完成这项工作。这似乎是一种浪费,而是更愿意将参数传递给更广泛的函数。感谢任何编码专家的帮助。

布兰特

解决方法

我想我已经发现了我的错误并在下面演示:

grp_kidney <- grp_kidney %>%
  mutate(plain = map(data,sFit,ci = 'plain')) %>%
  mutate(loglog = map(data,ci = 'log-log'))

此代码与我的原始代码之间的区别在于我使用 data 而不是 grp_kidney$data 引用数据的方式。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?