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