
380
|
第
12
章
以这种方式使用 do.call 在功能上与下面调用 cbind 完全相同:
cbind(my_lists[[1]], my_lists[[2]], my_lists[[3]])
#> [,1] [,2] [,3]
#> [1,] 7 70 700
#> [2,] 8 80 800
如果列表元素具有名称,请小心处理。在这种情况下,do.call 将元素名
称解释为函数的参数名称,这可能会导致麻烦。
本方法介绍了 do.call 的最基本用法。该函数的功能非常强大,还有许多其他用途。
有关详细信息,请参阅帮助页面。
12.16.4 另请参阅
有关数据类型之间的转换,请参见 5.29 节。
12.17 定义你自己的二元运算符
12.17.1 问题
你要定义自己的二元运算符,让 R 代码更加流畅和可读。
12.17.2 解决方案
R 将百分号(%...%)之间的任何文本识别为二元运算符。通过为其赋值一个双参数函
数来创建和定义新的二元运算符。
12.17.3 讨论
R 包含一个有趣的功能,可以让你定义自己的二元运算符。两个百分号(%...%)之间
的任何文字将自动由 R 解释为二元运算符。R 预定义了几个这样的运算符,例如整数除
法的 %/%、矩阵乘法的 %*% 和 magrittr 添加包中的管道 %>%。
通过把一个函数赋值给这个新的运算符,你就可以创建一个新的二元运算符。此示例创
建一个运算符 %+-%:
'%+-%' <- function(x, margin)
x + c(-1, +1) * margin ...