函数在sapply中只执行最后一个命令吗?

时间:2018-03-06 10:33:45

标签: r function sapply

我写了以下代码:

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只返回第二个命令(x * y)的结果

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

然后我尝试了以下代码:

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

和R返回

[1]  8 10

sapply中的函数是仅执行最后一个命令吗?

我怎样才能重写代码以获得我需要的东西?

1 个答案:

答案 0 :(得分:0)

我们可以与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