• R 语言 do.call() 函数


    描述:

    do.call 根据名称或函数以及要传递给它的参数列表构造并执行函数调用。

    语法:

    do.call(what, args, quote = FALSE, envir = parent.frame())

    参数:

    what

    函数或命名要调用的函数的非空字符串。

    args

    函数调用的参数列表。 args的names属性提供参数名称。

    quote

    指示是否引用参数的逻辑值。

    envir

     an environment within which to evaluate the call.

    This will be most useful if what is a character string and the arguments are symbols or quoted expressions.

    示例1:

    > df
      letter number sign
    1      a      1    <
    2      b      2    >
    3      c      3    ^
    4      d      4    <
    5      e      5    >
    6      f      6    ^
    7      g      7    <
    8      h      8    >
    9      i      9    ^
    > do.call(paste, c(df, sep=""))
    [1] "a1<" "b2>" "c3^" "d4<" "e5>" "f6^" "g7<" "h8>" "i9^"

     

    实例2:

     > numbers <- list(10, 1:9)

    > add <- function(x, y) {x + y}

    > numbers[1]

    [[1]]

    [1] 10

    > numbers[2]

    [[1]]

    [1] 1 2 3 4 5 6 7 8 9

    > numbers[[1]] + numbers[[2]]

    [1] 11 12 13 14 15 16 17 18 19

    > add(numbers[[1]], numbers[[2]])

    [1] 11 12 13 14 15 16 17 18 19

    > do.call(add, numbers)

    [1] 11 12 13 14 15 16 17 18 19

     

    例3:

    > df <- data.frame("upper"=toupper(letters[1:7]),
                "lower"=tolower(letters[1:7]),
                "number"=1:7, stringsAsFactors=F) > do.call(rbind, df) [,1] [,2] [,3] [,4] [,5] [,6] [,7] upper "A" "B" "C" "D" "E" "F" "G" lower "a" "b" "c" "d" "e" "f" "g" number "1" "2" "3" "4" "5" "6" "7"


    > list1 <- list(df1, df2)
    > list1
    [[1]]
      upper number
    1     A      1
    2     B      2
    3     C      3
    4     D      4
    5     E      5
    6     F      6
    7     G      7
    [[2]] lower number 1 a 1 2 b 2 3 c 3 4 d 4 5 e 5 6 f 6 7 g 7
    > do.call(cbind, list1)
      upper number lower number
    1     A      1     a      1
    2     B      2     b      2
    3     C      3     c      3
    4     D      4     d      4
    5     E      5     e      5
    6     F      6     f      6
    7     G      7     g      7
    > do.call(merge, list1) number upper lower 1 1 A a 2 2 B b 3 3 C c 4 4 D d 5 5 E e 6 6 F f 7 7 G g

    按语:
    do.call函数,应用在大数据时,速度相当不错。


     
  • 相关阅读:
    [转]Entity Framework 和NHibernate的区别
    NHibernate One Session Per Request简单实现
    memcache和memcached之间的区别
    Memcached 内存分配机制介绍
    linux,apache,php,mysql常用的查看版本信息的方法
    Linux查看文件夹大小
    Linux查看系统配置常用命令
    php 文件缓存(转)
    memcache在xampp下的安装
    通过改进代码将for循环遍历数组提高效率
  • 原文地址:https://www.cnblogs.com/shanger/p/12179995.html
Copyright © 2020-2023  润新知