为什么省略。。。在purrr的lambda函数中使用时,必须包装在c()中
这个问题可以称为第三部分 我知道lambda函数中的参数在为什么省略。。。在purrr的lambda函数中使用时,必须包装在c()中,r,lambda,tidyverse,purrr,ellipsis,R,Lambda,Tidyverse,Purrr,Ellipsis,这个问题可以称为第三部分 我知道lambda函数中的参数在tidyverse中使用时,尤其是purrr函数中的参数写为- 当只有一个参数时 .x和.y当有2个 或.1,.2等,当存在>2个参数时 在链接的问题中,我了解到,如果必须同时传递所有参数,我们可以使用省略号,即… 但是我的问题是,为什么这样的…只在包装在c()中时才起作用,而这样使用时就不起作用了。在下面的两个语法中,第二个有效,而第一个无效 #1 this doesn't work pmap_df(iris[1:4], ~...
tidyverse
中使用时,尤其是purrr
函数中的参数写为-
当只有一个参数时
和.x
当有2个.y
- 或
,.1
等,当存在.2
参数时>2个
…
但是我的问题是,为什么这样的…
只在包装在c()
中时才起作用,而这样使用时就不起作用了。在下面的两个语法中,第二个有效,而第一个无效
#1 this doesn't work
pmap_df(iris[1:4], ~...)
Error in .f(Sepal.Length = .l[[1L]][[i]], Sepal.Width = .l[[2L]][[i]], :
'...' used in an incorrect context
#2 this however, works and returns the first argument after converting it to a tibble
pmap_df(iris[1:4], ~ c(...))
#see
identical(pmap_df(iris[1:4], ~c(...)), iris[1:4] %>% as_tibble())
[1] TRUE
有人能解释一下吗?关于省略号,有这样的说法:
The components of ‘...’ can be accessed in the usual pairlist manner from C code, but is not easily accessed as an object in interpreted code.
这可能是你问题答案的一部分:省略号是一个不容易访问的对象
您可能需要进行一次狩猎旅行,深入了解C代码中的内容,以了解更多信息
现在,作为一个不容易访问的对象,…
当然不能作为列表或向量,这正是pmap_df想要的。虽然从技术上讲,它可能会
< > > <代码> ~/>代码>如何创建一个线性函数体,真正的原因可能是它本身并不考虑省略号。
考虑:
然而,如果我现在确实看到,~…
本身似乎很好,我现在还没有一个答案,当然,这是因为映射器从~
-表达式创建一个函数,请看,回过头来看,r文档说,..
作为对象不容易访问。用c()或list()将其包装,可以避免将其作为一种(或两种,取决于您如何看待)可行的技术。要想进一步了解这一点,你可能需要在C-landSure中进行深入研究,我的答案中已经有了。现在作为一个不容易访问的对象,我很确定…
不是一个列表。(那时它很容易被访问)我得出的结论是,~本身就是问题所在,不管…
作为对象访问有多容易或难。蒂尔德显然不在乎省略号。您需要c()或list(),它们可以。。所有这些都是我在随意回答你的问题时学到的。但这不是一个人学习的方式吗。