代码之家  ›  专栏  ›  技术社区  ›  MCP_infiltrator

在“tible”中添加一列,给出其列表位置

  •  1
  • MCP_infiltrator  · 技术社区  · 2 年前

    我有一份 tibbles 我想在每个 tibble 这表示它在列表中的位置。

    假设我有以下几点:

    library(tidyverse)
    
    l <- list(
      tibble(x = 1:3, y = rev(x)),
      tibble(a = 3:1, b = rev(a))
    )
    

    其产生:

    > l
    [[1]]
    # A tibble: 3 x 2
          x     y
      <int> <int>
    1     1     3
    2     2     2
    3     3     1
    
    [[2]]
    # A tibble: 3 x 2
          a     b
      <int> <int>
    1     3     1
    2     2     2
    3     1     3
    

    如何使用 tidyverse 获取以下内容的语法:

    > l
    [[1]]
    # A tibble: 3 x 2
          x     y     list_pos
      <int> <int>        <int>
    1     1     3            1
    2     2     2            1
    3     3     1            1
    
    [[2]]
    # A tibble: 3 x 2
          a     b     list_pos
      <int> <int>        <int>
    1     3     1            2
    2     2     2            2
    3     1     3            2
    
    1 回复  |  直到 2 年前
        1
  •  2
  •   PaulS    2 年前

    可能的解决方案:

    library(tidyverse)
    
    imap(l, ~ bind_cols(.x, pos = .y))
    
    #> [[1]]
    #> # A tibble: 3 x 3
    #>       x     y   pos
    #>   <int> <int> <int>
    #> 1     1     3     1
    #> 2     2     2     1
    #> 3     3     1     1
    #> 
    #> [[2]]
    #> # A tibble: 3 x 3
    #>       a     b   pos
    #>   <int> <int> <int>
    #> 1     3     1     2
    #> 2     2     2     2
    #> 3     1     3     2