当前位置: 首页 > 知识库问答 >
问题:

嵌套/分组tibbles:在函数具有多个参数时使用purrr:map内部mutate

周博达
2023-03-14

我想使用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将结果保存为分组tibble中的一个新列。

grp_kidney <- grp_kidney %>%
  mutate(plain = map(grp_kidney$data, sFit, ci = 'plain')) %>%
  mutate(loglog = map(grp_kidney$data, sFit, 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, sFit, 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:

    null

布兰特

共有1个答案

赫连昕
2023-03-14

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

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

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

 类似资料:
  • 问题内容: Python noob在这里。如何在“ fib”功能中掌握“内部”功能? 问题答案: 您不能,除非以某种方式返回,否则不能。 本质上是范围内的局部变量,您不能从外部访问函数的局部变量。(这甚至不会是有意义的,因为该功能正在运行时,除了不存在当地人想想看- 这将是有意义的访问的变量从功能之外吗?)

  • 问题内容: 我需要在QueryDsl Native MySQL中运行以下查询。 上面的查询具有嵌套的3个mysql函数,例如cast,json_unquote和json_extract。在QueryDsl中,我为每个函数创建了单独的表达式,如下面的代码所示。 我必须创建更多数量的表达式,而不要创建更多的函数。为了降低复杂性,是否可以在单个表达式中调用多个函数? 问题答案: 我找到了问题的答案。 感

  • 嗨,我是ReactJS平台的学生开发者。我以前在render方法中使用过类组件,但现在我学习了钩子和函数组件对它的重要性,就像每个Reactjs开发人员所知道的那样。我在使用嵌套组件时遇到问题,我面临如下错误: index.js:1警告:函数作为React子函数无效。如果返回组件而不是从渲染返回组件,可能会发生这种情况。或者你想调用这个函数而不是返回它 你能帮我解决这个问题吗?如何在返回部分有效地

  • 可以使用零个或多个参数定义Clojure函数。 传递给函数的值称为arguments ,参数可以是任何类型。 参数的数量是函数的arity。 本章讨论了一些具有不同arities的函数定义。 在以下示例中,函数demo使用每个函数定义的多个参数进行定义。 (defn demo [] (* 2 2)) (defn demo [x] (* 2 x)) (defn demo [x y] (* 2 x y

  • 问题内容: 我有一个关于桌子设计的问题。我有一个应该认为可行的解决方案,但是没有。 考虑具有两个实体“ Subject”和“ Process”,它们都具有某些属性。每个“主题”可以与多个“进程”相关联。根据选择哪个“过程”,存在不同数量的实体“过程属性”。换句话说,当用户将“过程”与“主题”相关联时,他应该只能编辑专门链接到该“过程”的“属性”。 最终,我希望用户能够执行3件事: 创建新的“流程”