【发布时间】:2018-02-27 00:57:00
【问题描述】:
使用空环境开始新的 R 会话。编写一系列带有参数的函数,该参数将用作rep() 调用中times 参数的值。
f <- function(n) {
rep("hello", times = n)
}
f(x)
人们期望这会失败,而实际上人们会得到:
# Error in f(x) : object 'x' not found
稍微修改一下函数:
f2 <- function(n) {
ls.str()
rep("hello", times = n)
}
f2(x)
果然还是失败了:
# Error in f2(x) : object 'x' not found
再修改一点(在控制台中查看环境):
f3 <- function(n) {
print(ls.str())
rep("hello", times = n)
}
f3(x)
我仍然期待失败,但得到:
## n : <missing>
## [1] "hello"
就好像对print() 的调用使rep 像times 被设置为1 一样工作。
【问题讨论】: