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

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

我写了以下代码:

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中只执行最后一个命令吗?

我怎么能重写代码来获得我需要的东西?

r function sapply
1个回答
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

© www.soinside.com 2019 - 2024. All rights reserved.