R语言嵌套函数疑问:内部函数返回值无法输出如何解决?
R嵌套函数问题解答
先看你的代码:
f1<-function(x,y){ f2<-function(a,b){ print("f2") return(a+b)} f2(x,y) print("f1") return(x-y)} f1(8,5)
为什么f2的return(a+b)或直接写a+b无法输出13?
你调用f2(x,y)时,f2确实计算出了13并通过return返回,但这个返回值只是回到了f1的内部,并没有被输出到控制台:
- R里函数调用的返回值不会自动打印,除非你主动用
print()输出,或者把它赋值给变量后再处理。你的代码里只是调用了f2,但没对它的返回值做任何操作,所以13被直接丢弃了。 - 就算f2里不写return,直接写
a+b,结果也一样——因为R函数默认返回最后一个表达式的结果,这个结果同样只会返回给f1,不会自动显示。
如果要看到13,你可以把f2(x,y)改成print(f2(x,y)),这样就能打印出f2的返回值了。
函数最后一行直接写x-y代替return(x-y)是否规范?
这是完全规范的写法:
- R函数的返回规则是默认返回最后一个执行的表达式的结果,所以直接写
x-y和用return(x-y)的效果完全相同。 - 两种写法各有优势:短函数里直接写最后一行更简洁;复杂函数里用
return()能更清晰地标记返回位置,让代码可读性更强。
内容的提问来源于stack exchange,提问作者sam
相关产品推荐
相关产品推荐

