【问题标题】:how to use $ mark to get a sub-element of a list in dplyr pipe如何使用 $ 标记在 dplyr 管道中获取列表的子元素
【发布时间】:2021-12-29 13:14:45
【问题描述】:

如果我想使用“$”来获取 dplyr 管道中列表的子元素怎么办?

问题来自: 我在每种情况下都调用了 boxplot.stats()(4 个因素:价值、金属、颠簸、参考):

match.raw %>% 
  select(-id) %>% 
  group_by(value, metallic, bumpiness, reference) %>% 
  group_split() %>% 
  map(select, diff) %>% 
  map(as.matrix) %>% 
  map(boxplot.stats)

然后我得到了多个 boxplot.stats 调用的一堆结果。我想从每个 boxplot.stats 结果中获取“输出”信息,就像:

boxplot.stats(x)$out

这是我的数据:

> head(match.raw, 20)
   id value metallic bumpiness reference match  diff
1   1   1.0      1.0       0.5       0.7  0.74  0.04
2   1   1.0      1.0       0.5       0.9  0.88 -0.02
3   1   1.0      0.0       0.5       0.3  0.30  0.00
4   1   0.0      0.5       0.5       0.3  0.32  0.02
5   1   1.0      0.0       0.5       0.7  0.46 -0.24
6   1   0.0      1.0       0.5       0.3  0.28 -0.02
7   1   0.0      1.0       0.5       0.7  0.72  0.02
8   1   1.0      0.5       0.5       0.5  0.56  0.06
9   1   0.5      0.0       0.5       0.9  0.84 -0.06
10  1   0.0      0.5       0.5       0.5  0.54  0.04
11  1   0.5      1.0       0.5       0.1  0.10  0.00
12  1   0.5      0.5       0.5       0.9  0.96  0.06
13  1   1.0      0.0       0.5       0.1  0.00 -0.10
14  1   0.0      0.5       0.5       0.9  0.92  0.02
15  1   1.0      0.5       0.5       0.9  0.94  0.04
16  1   1.0      0.5       0.5       0.1  0.28  0.18
17  1   1.0      1.0       0.5       0.1  0.10  0.00
18  1   0.0      0.5       0.5       0.1  0.22  0.12
19  1   1.0      0.0       0.5       0.5  0.00 -0.50
20  1   0.5      0.5       0.5       0.7  0.78  0.08

【问题讨论】:

    标签: r dplyr


    【解决方案1】:

    试试这个。

    library(purrr); library(dplyr)
    
    match.raw %>% 
      select(-id) %>% 
      group_by(value, metallic, bumpiness, reference) %>% 
      group_split() %>% 
      map(select, diff) %>% 
      map(as.matrix) %>% 
      map(boxplot.stats) %>%
      map(\(.) .$out) %>%
      unlist()
    

    您的示例数据在numeric(0) 中无处不在"out"

    【讨论】:

    • 谢谢!有用。你能解释一下这个“(.).$out”的语法吗?
    • @T3-Tan 太好了。是的,它是一个匿名函数,它接受输入并应用$out。这很好用,因为列表已命名。这有帮助吗?
    猜你喜欢
    • 1970-01-01
    • 2016-03-19
    • 1970-01-01
    • 1970-01-01
    • 2018-11-26
    • 1970-01-01
    • 2019-09-01
    • 2018-07-18
    • 2018-09-01
    相关资源
    最近更新 更多