tidyverse(purr软件包)中map、lmap和imap之间的差异?

tidyverse(purr软件包)中map、lmap和imap之间的差异?,r,functional-programming,tidyverse,purrr,R,Functional Programming,Tidyverse,Purrr,我是一个R用户。我主要使用R中的基本应用函数。然而,我发现purrr包很有趣,但我无法区分函数map、lmap和imap。如果有人能用一些例子来区分这些函数,我将不胜感激。我尝试了purrr包引用,但我无法理解它们之间的实际差异。谢谢 映射:映射元素,在每个元素上运行函数 imap:与map类似,但您也可以获得第h元素的索引或名称 lmap:映射元素,要求它们位于列表中,并将函数作为一个元素列表在每个元素上运行 见: 请更正程序包名称的多个错误。感谢您的输入。我换了。谢谢你的回复。我真的很感激。

我是一个R用户。我主要使用R中的基本应用函数。然而,我发现purrr包很有趣,但我无法区分函数map、lmap和imap。如果有人能用一些例子来区分这些函数,我将不胜感激。我尝试了purrr包引用,但我无法理解它们之间的实际差异。谢谢

  • 映射:映射元素,在每个元素上运行函数
  • imap:与map类似,但您也可以获得第h元素的索引或名称
  • lmap:映射元素,要求它们位于列表中,并将函数作为一个元素列表在每个元素上运行
  • 见:


    请更正程序包名称的多个错误。感谢您的输入。我换了。谢谢你的回复。我真的很感激。
    # map:
    
    > foo <- map( c(6:8), ~ print( .x ) )
    [1] 6
    [1] 7
    [1] 8
    
    # imap:
    > foo <- imap( c(6:8), ~ print( c(.x,.y) ) )
    [1] 6 1
    [1] 7 2
    [1] 8 3
    
    # lmap:
    > foo <- lmap( c(6:8), ~ print( c(.x) ) ) ## ERROR!
    > foo <- > foo <- lmap( as.list(6:8), ~ print(.x) )
    [[1]]
    [1] 6
    
    [[1]]
    [1] 7
    
    [[1]]
    [1] 8
    
    ## imap with names instead:
    > foo <- imap( myvector, ~ cat( paste(.x,.y), "\n" ) )
    6 a 
    7 b 
    8 c 
    
    
    ## map:
    
    > foo <- map( head(iris,n=3), print )
    [1] 5.1 4.9 4.7
    [1] 3.5 3.0 3.2
    [1] 1.4 1.4 1.3
    [1] 0.2 0.2 0.2
    ## -> each iteration gets a vector
    
    ## and with lmap:
    > foo <- lmap( head(iris,n=3), print )
      Sepal.Length
    1          5.1
    2          4.9
    3          4.7
      Sepal.Width
    1         3.5
    2         3.0
    3         3.2
      Petal.Length
    1          1.4
    2          1.4
    3          1.3
      Petal.Width
    1         0.2
    2         0.2
    3         0.2
      Species
    1  setosa
    2  setosa
    3  setosa
    ## -> each iteration gets a 1-column data.frame (which is useful when you need that)