Skip to Content
R 语言经典实例(原书第 2 版)
book

R 语言经典实例(原书第 2 版)

by J.D. Long, Paul Teetor
June 2020
Beginner to intermediate
522 pages
9h 6m
Chinese
China Machine Press
Content preview from R 语言经典实例(原书第 2 版)
464
15
15.6 定义函数参数的默认值
15.6.1 问题
需要为函数定义默认参数,即调用者未提供显式参数时要使用的值。
15.6.2 解决方案
R 允许你在 function 定义中设置参数的默认值:
my_fun <- function(
param = default_value
) {
...
}
15.6.3 讨论
让我们创建一个示例函数,用来对给定的名字给出问候:
greet <- function(name) {
cat("Hello,", name, "\n")
}
greet("Fred")
#> Hello, Fred
如果我们在没有给出 name 参数的情况下调用 greet,我们会得到下面的错误:
greet()
#> Error in cat("Hello,", name, "\n") :
#> argument "name" is missing, with no default
但是,我们可以更改函数定义以定义默认的 name 参数。在这种情况下,我们将参数
name 默认为通用名称 world
greet <- function(name = "world") {
cat("Hello,", name, "\n")
}
现在,如果省略参数,R 提供默认值:
greet()
#> Hello, world
这种默认机制很方便。尽管如此,我们建议谨慎地使用它。我们已经看到太多的情况,
函数
创建者
定义了默认值,而函数
调用者
没有多想就接受了默认值,导致了可疑的结
果。例如,如果你使用
k
近邻算法,则 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.

Read now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

机器学习实战:基于Scikit-Learn、Keras 和TensorFlow (原书第2 版)

机器学习实战:基于Scikit-Learn、Keras 和TensorFlow (原书第2 版)

Aurélien Géron
大规模数据分析和建模:基于 Spark 与 R

大规模数据分析和建模:基于 Spark 与 R

Javier Luraschi, Kevin Kuo, Edgar Ruiz
管理Kubernetes

管理Kubernetes

Brendan Burns, Craig Tracey

Publisher Resources

ISBN: 9787111656814