与lapply / sapply结合使用的函数的异常行为?

问题描述 投票:0回答:2

mult_six <- function(x) {
  y <- x * 6
}

mult_six(7)

不返回任何内容(按预期方式返回),并且y未全局分配(也正如预期的那样,因为分配发生在函数的范围内,而不是在父环境中-因此y返回Error: object 'y' not found-完全正常)

但是

sapply(c(1,2,3), mult_six)

返回

[1]  6 12 18

((lapply()返回列表的等效项)。

我不明白为什么lapply / sapply的行为与分别调用每个元素上的函数有什么不同?

r
2个回答
1
投票

众所周知,函数默认返回函数的最后一行,但是,由于在此函数中分配了一个值,因此不会显式显示结果,但是如果您使用print,则可以看到它。

print(mult_six(7))
#[1] 42

0
投票

我们可以用()换行

(mult_six(7))
#[1] 42

不需要分配给y<-。会是

mult_six <- function(x) {
     x * 6
  }
© www.soinside.com 2019 - 2024. All rights reserved.