Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么省略。。。在purrr的lambda函数中使用时,必须包装在c()中_R_Lambda_Tidyverse_Purrr_Ellipsis - Fatal编程技术网

为什么省略。。。在purrr的lambda函数中使用时,必须包装在c()中

为什么省略。。。在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], ~...

这个问题可以称为第三部分

我知道lambda函数中的参数在
tidyverse
中使用时,尤其是
purrr
函数中的参数写为-

  • 当只有一个参数时
  • .x
    .y
    当有2个
  • .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(),它们可以。。所有这些都是我在随意回答你的问题时学到的。但这不是一个人学习的方式吗。