定义无返回值R函数的最佳方式是什么?
关于R实现无返回值函数的解决方案
R语言的底层设计规则是所有函数执行完成后必然会返回一个对象,不存在完全不返回任何值的函数,但可以通过官方提供的语法实现调用时无输出、使用体感和无返回值完全一致的效果,完全适配你调用void类型C函数的场景。
适配你场景的修改方案
你可以将你的R函数调整为以下写法:
my_r_function <- function() { .Call("my_c_function") invisible(NULL) }
也可以使用更简化的写法(因为void类型的C函数被.Call调用时本身就会返回NULL):
my_r_function <- function() { invisible(.Call("my_c_function")) }
原理说明
invisible()是R的内置函数,作用是让返回的对象不会在直接调用函数时自动打印输出,只有当用户显式将函数调用结果赋值给变量时才会拿到对应的返回值- 搭配返回
NULL(也就是R中的空对象),完全模拟了其他语言中void无返回值函数的使用体验,符合你调用C层void函数的封装需求
内容的提问来源于stack exchange,提问作者user7698505
相关产品推荐
相关产品推荐

