sapply 中的函数是否只执行最后一个命令?

does function in sapply execute only the last one command?

我写了下面的代码:

sapply(1:2, function(x) 
  sapply(2:3, function(y) {
    x+y
    x*y }
  ))

希望得到

3(1+2), 2(1*2), 4(1+3), 3(1*3)

4(2+2), 4(2*2), 5(2+3), 6(2*3)

但 R 仅 returns 第二个命令的结果 (x*y)

     [,1] [,2]
[1,]    2    4
[2,]    3    6

然后我尝试了下面的代码:

sapply(4:5, function(x) {
  x+1
  x*2 }
)

和Rreturns

[1]  8 10

sapply中的函数是否只执行最后一条命令?

我如何重写代码以获得我需要的东西?

我们可以用 c

进行串联
sapply(1:2, function(x) 
   sapply(2:3, function(y) {

    c(x+y,
        x*y) }
   ))
#     [,1] [,2]
#[1,]    3    4
#[2,]    2    4
#[3,]    4    5
#[4,]    3    6

或者如果输出类型不同,则放在 listdata.frame