←
PDF 311 / 520 Lazy Evaluation
→
English · PDF 311
Original PDF page 311
中文 · PDF 311

这里的 ... 让我可以把任何不想处理的参数转发给 str_c()。这是一种非常方便的技术。但它也有代价:任何拼写错误的参数都不会引发错误。这使得拼写错误很容易被忽略:

x <- c(1, 2) sum(x, na.mr = TRUE) #> [1] 4

如果你只想捕获 ... 的值,可以使用 list(...)。

惰性求值

R 中的参数是惰性求值的:它们在被需要之前不会被计算。这意味着如果它们从未被使用,就永远不会被调用。这是 R 作为一门编程语言的一个重要特性,但在为数据分析编写自己的函数时通常并不重要。你可以在 < 阅读更多关于惰性求值的内容。http://adv-r.had.co.nz/Functions.html#lazy-evaluation>.

练习

    1. commas(letters, collapse = "-") 的作用是什么?为什么?
    1. 如果你能给 pad 参数提供多个字符就好了,例如 rule("Title", pad = "-+")。为什么目前这不起作用?你该如何修复它?
    1. mean() 的 trim 参数有什么作用?你什么时候可能会用到它?
    1. cor() 的 method 参数的默认值是 c("pear son", "kendall", "spearman")。这意味着什么?默认使用的是哪个值?

返回值

弄清楚你的函数应该返回什么通常很简单:这毕竟是你创建函数的初衷!在返回值时,你应该考虑两件事:

  • 提前返回能否让你的函数更易读?
  • 你能否让你的函数支持管道操作?