绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
Rcpp高性能计算(三):输出字符(Hello World!)
2020-06-25 16:54:52

作者:黄天元,复旦大学博士在读,热爱数据科学与开源工具(R),致力于利用数据科学迅速积累行业经验优势和科学知识发现,涉猎内容包括但不限于信息计量、机器学习、数据可视化、应用统计建模、知识图谱等,著有《R语言高效数据处理指南》(《R语言数据高效处理指南》(黄天元)【摘要 书评 试读】- 京东图书)。知乎专栏:R语言数据挖掘邮箱:huang.tian-yuan@qq.com.欢迎合作交流。

每一个编程语言都有自己的Hello World,而Rcpp也可以。这里我们找到了其输出字符串的两个函数,进行尝试,顺便介绍一下基础。首先运行以下代码直接走向Hello World:

library(pacman)
p_load(Rcpp)

src <-
  '#include <Rcpp.h>  //头文件
using namespace Rcpp;  //使用命名空间
// [[Rcpp::export]]
void rcpp_hw(){
  Rcout << "Hello World!";
}'

sourceCpp(code = src)
rcpp_hw()

src是我们的C++代码部分,包括一个头文件(声明用了Rcpp)、命名空间(相当于R中的library,如果没有就必须用Rcpp::表示命名空间)和一个返回空(void)的函数。首先记得代码写完要加分号(;),其次记得如果想要让函数作为R函数输出要在函数前加“// [[Rcpp::export]]”这个注释。后,在R中我们用sourceRcpp来对这段代码进行编译,它就能够直接运行了。

又是命名空间,又是头文件还要输出,实在太麻烦,其实可以直接使用cppFuction函数节省这些步骤,代码如下:

cppFunction('
            void rcpp_hw(){
  Rcout << "Hello World!";
}
            ')

此外,输出函数还可以这样写:

cppFunction('
            void rcpp_hw(){
  Rprintf("Hello World!");
}
            ')

感觉Rprintf更为方便。这些输出函数在使用Rcpp需要输出字符串的时候(特别是结合数据来做输出),将会十分有用。

参考链接:Chapter 6 Printing messages | Rcpp for everyone

PS:为什么要用单引号?因为如果不用,C++中的双引号就要挂掉了,所以一定要注意,写C++代码需要在外面用单引号。

分享好友

分享这个小栈给你的朋友们,一起进步吧。

R语言
创建时间:2020-06-15 11:46:51
R是用于统计分析、绘图的语言和操作环境。R是属于GNU系统的一个自由、免费、源代码开放的软件,它是一个用于统计计算和统计制图的工具。
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

技术专家

查看更多
  • 小雨滴
    专家
戳我,来吐槽~