• 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函数,应用在大数据时,速度相当不错。


     
  • 相关阅读:
    抽象工厂例子
    学习boost::asio一些小例子
    boost::asio学习(定时器)
    共享内存
    网络流程图
    粘包
    端游服务器群
    38 写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。
    37 有n个人围成一圈,顺序排号,从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号那位.
    36 有n个整数,使其前面各数顺序向后移n个位置,最后m个数变成最前面的m个数
  • 原文地址:https://www.cnblogs.com/shanger/p/12179995.html
Copyright © 2020-2023  润新知