【问题标题】:How to name a dataframe so that I can look for it within a list如何命名数据框以便我可以在列表中查找它
【发布时间】:2018-05-05 08:38:48
【问题描述】:

我有一个返回数据框的函数。我将此函数与furrr::future_map2 一起使用,以便获得一个包含多个数据框的列表。

  • 我想要的是能够在函数中使用name 输入来命名数据框,以便我可以按名称搜索返回列表。

示例

test <- function(x, name){
   require(tidyverse)
   z <- data.frame(x+1) %>% stats::setNames(., "a")

   return(z)
 }


furrr::future_map2(1:3, c("a", "b", "c"), ~test(.x, .y))
  • 列表中的第一个df是a,第二个是b,以此类推
  • 命名应在函数内完成
  • names(list.return) &lt;- vector.of.list.names.in.character 选项对我不起作用。

请帮忙

【问题讨论】:

  • 您没有将name 传递给test

标签: r purrr


【解决方案1】:

这个怎么样?

mapply(
  function(x,y){
    data.frame(y+1) %>% setNames(., x)
    }, 
  c("a", "b", "c"), 1:3, USE.NAMES = T, SIMPLIFY = F)

输出为:

$a
  a
1 2

$b
  b
1 3

$c
  c
1 4

【讨论】:

  • 我想为此使用 future_map2。它加快了我的阅读时间,从 31 分钟到 6 分钟!
  • 这个基准测试是在mapplyfurrr 之间完成的吗?顺便说一句,我们很高兴知道您使用 names(res) &lt;- purrr::map_chr(res, ~attr(.x, "name")) 找到了解决方案。
  • 我还没有做基准测试。我从来没有学过mapply,我把精力集中在purrr,尽管我尽了最大的努力,我还是无法理解apply这组函数:(
【解决方案2】:

@DavisVaughan 提供了解决方案 https://github.com/DavisVaughan/furrr/issues/10

【讨论】:

    猜你喜欢
    • 2012-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-25
    • 2012-10-03
    • 2018-01-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多