Reduce()和...(省略号)

编码器人123

遵循Hadley在Advanced R中的建议,我正在尝试使用来创建合并功能的递归版本Reduce()但是,他的示例使用数字矢量,例如

Reduce(`+`, 1:3)
[1] 6

而我希望能够使用...(省略号)给出多个参数。我想到的是这样的:

merge_datasets_multi = function(..., main=1, time=F) {
  #wrap with Reduce
  Reduce(function(x, y) merge_datasets(x, y, main=main, time=time), ...)

  #debugging, verify that the anonymous function works
  #(function(x, y) merge_datasets(x, y, main=main, time=time))(iris[1:50, ], iris[51:100, ])
}

merge_datasets()功能在我的个人包装中

我已经测试了在给定两个参数的情况下我制作的匿名函数可以工作的情况。

但是,这将引发错误:

merge_datasets_multi(iris[1:50, ], iris[51:100, ], iris[101:150, ])
Error in if (right) { : argument is not interpretable as logical
In addition: Warning message:
In if (right) { :
  the condition has length > 1 and only the first element will be used
Called from: Reduce(function(x, y) merge_datasets(x, y, main = main, time = time), 
    ...)

大概是因为第三个参数(a data.frame)传递给条件条件,该条件无法求值为true或false并引发错误。

因此,如果我们不是给它listdata.frames,它应该工作:

merge_datasets_multi(list(iris[1:50, ], iris[51:100, ], iris[101:150, ]))

确实如此。但是,这需要用户采取额外的步骤将data.frames添加到中,list然后再调用merge_datasets_multi()

我尝试将as.list(...)用作参数传递Reduce(),但它不起作用。输出只是第一个data.frame转换为的输出list

一个人如何做一个以Reduce()...为输入的顺序函数

编码器人123

答案显然很简单。与其尝试as.list()不如尝试使用list()请参阅此先前的答案

library(magrittr)
merge_datasets_multi = function(..., main=1, time=F) {
  #wrap with Reduce
  Reduce(function(x, y) merge_datasets(x, y, main=main, time=time), list(...))
}
merge_datasets_multi(iris[1:50, ], iris[51:100, ], iris[101:150, ]) %>% dim
[1] 150   5

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

框中的多行带有省略号和中间垂直对齐

来自分类Dev

是否有TextFormatFlags的组合允许文本换行和结尾的省略号?

来自分类Dev

iOS 7中的UILabel和UILabel的省略号颜色更改

来自分类Dev

有什么办法以编程方式区分最终参数数组和最终参数省略号?

来自分类Dev

Bootstrap面板标题:标题文本右侧带有省略号和按钮

来自分类Dev

CSS文字省略号和100%宽度

来自分类Dev

滚动时文本溢出省略号未在Chrome和IE中显示溢出内容

来自分类Dev

在这种情况下,如何处理Function <T,R>和省略号/ varargs?

来自分类Dev

处理省略号

来自分类Dev

文本溢出省略号和flex在Firefox上不起作用

来自分类Dev

错误“仅整数,切片(`:`),省略号(`...`),tf.newaxis(`None`)和标量”

来自分类Dev

在ggplot2构面之间添加空格和三个点(省略号)以指示省略的构面

来自分类Dev

对dplyr和merge()使用三个点/省略号(...)作为列名

来自分类Dev

CSS div自动调整大小到内容,带有最大宽度和省略号文本

来自分类Dev

具有第二列动态宽度和省略号的固定宽度表

来自分类Dev

用括号和省略号在流中输入别名

来自分类Dev

在引导面板标题中使用带div和span的省略号

来自分类Dev

结构省略号

来自分类Dev

php省略号,以preg_replace开头和结尾的整个单词

来自分类Dev

嵌套函数调用和省略号的名称相同的参数

来自分类Dev

文本溢出:省略号和显示表格单元

来自分类Dev

未公开代码时的编译和执行;在代码中使用省略号

来自分类Dev

简单表达式的非法开头:选项类型和省略号

来自分类Dev

选择对象上的空格和带有省略号的截断

来自分类Dev

div容器中的表格布局和省略号

来自分类Dev

省略号以限制离子的文本高度和宽度

来自分类Dev

如何在Angular中使用省略号和标签实现(动态宽度)文本输入?

来自分类Dev

numpy 三维切片和索引以及省略号是如何工作的?

来自分类Dev

我怎样才能让我的文本成为两行填充和省略号?

Related 相关文章

  1. 1

    框中的多行带有省略号和中间垂直对齐

  2. 2

    是否有TextFormatFlags的组合允许文本换行和结尾的省略号?

  3. 3

    iOS 7中的UILabel和UILabel的省略号颜色更改

  4. 4

    有什么办法以编程方式区分最终参数数组和最终参数省略号?

  5. 5

    Bootstrap面板标题:标题文本右侧带有省略号和按钮

  6. 6

    CSS文字省略号和100%宽度

  7. 7

    滚动时文本溢出省略号未在Chrome和IE中显示溢出内容

  8. 8

    在这种情况下,如何处理Function <T,R>和省略号/ varargs?

  9. 9

    处理省略号

  10. 10

    文本溢出省略号和flex在Firefox上不起作用

  11. 11

    错误“仅整数,切片(`:`),省略号(`...`),tf.newaxis(`None`)和标量”

  12. 12

    在ggplot2构面之间添加空格和三个点(省略号)以指示省略的构面

  13. 13

    对dplyr和merge()使用三个点/省略号(...)作为列名

  14. 14

    CSS div自动调整大小到内容,带有最大宽度和省略号文本

  15. 15

    具有第二列动态宽度和省略号的固定宽度表

  16. 16

    用括号和省略号在流中输入别名

  17. 17

    在引导面板标题中使用带div和span的省略号

  18. 18

    结构省略号

  19. 19

    php省略号,以preg_replace开头和结尾的整个单词

  20. 20

    嵌套函数调用和省略号的名称相同的参数

  21. 21

    文本溢出:省略号和显示表格单元

  22. 22

    未公开代码时的编译和执行;在代码中使用省略号

  23. 23

    简单表达式的非法开头:选项类型和省略号

  24. 24

    选择对象上的空格和带有省略号的截断

  25. 25

    div容器中的表格布局和省略号

  26. 26

    省略号以限制离子的文本高度和宽度

  27. 27

    如何在Angular中使用省略号和标签实现(动态宽度)文本输入?

  28. 28

    numpy 三维切片和索引以及省略号是如何工作的?

  29. 29

    我怎样才能让我的文本成为两行填充和省略号?

热门标签

归档