首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >获取Rcpp中的全局选项

获取Rcpp中的全局选项
EN

Stack Overflow用户
提问于 2018-07-09 05:23:17
回答 1查看 126关注 0票数 0

我想在Rcpp中获得一个选项(例如"width")的值。我试过了:

代码语言:javascript
复制
#include <Rcpp.h>
using namespace Rcpp;

// [[Rcpp::export]]
int test_option() {

  Environment base("package:base");
  Function get_option = base["getOption"];
  return get_option("width");
}

// [[Rcpp::export]]
int test_option2() {

  Environment base("package:base");
  Function get_option = base["options"];
  List l_width = get_option("width");
  return l_width[1];
}

第一个函数没有编译,第二个函数使会话崩溃。

你知道怎么做吗?

EN

回答 1

Stack Overflow用户

发布于 2018-07-09 05:51:35

test_option

如果你这样写你的第一个函数,它将会工作:

代码语言:javascript
复制
SEXP test_option() {

或者这样:

代码语言:javascript
复制
IntgerVector test_option() {

test_option2

关于问题中的第二个函数,您在注释中写道,您的目标是将SEXP转换为int,因此在这种情况下,如果s是包含整数的SEXP,那么as<int>(s)INTEGER(s)[0]就是int。这与IntegerVector相反。如果你真的想写一个IntegerVector,那么就用IntegerVector替换下面出现的三个int

将下面的代码放在当前目录的myOption.cpp中,并按照第一行中的说明进行操作。

代码语言:javascript
复制
// To run: library(Rcpp); sourceCpp("myOption.cpp")

#include <Rcpp.h>
using namespace Rcpp;

// [[Rcpp::export]]
int myOption(CharacterVector x) {
  Environment base( "package:base" ) ;
  Function getOption = base["getOption"];
  SEXP s = getOption(x);
  int i = as<int>(s);
  return i;
}

/*** R
myOption("width")
*/
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51236092

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档