我正在阅读"使用Rcpp进行无缝R和C++集成"的第4章,我遇到了一些问题.
在"列表4.13"中,本书给出了一个关于如何使用R函数的例子.我尝试使用其他函数(不同的例子)并且我获得了成功.我的代码在这里:
#include <Rcpp.h>
// [[Rcpp::export]]
Rcpp::DataFrame myrandom(Rcpp::NumericVector x) {
int n = x.size();
Rcpp::NumericVector y1(n), y2(n), y3(n);
y1 = Rcpp::pexp(x,1.0,1,0);
y2 = Rcpp::pnorm(x,0.0,1.0,1,0);
y3 = Rcpp::ppois(x,3.0,1,0);
return Rcpp::DataFrame::create(Rcpp::Named("Exp") = y1,Rcpp::Named("Norm") = y2, Rcpp::Named("Pois") = y3);
}
sourceCpp("random.cpp")
myrandom(c(0.5,1))
Run Code Online (Sandbox Code Playgroud)
在这种情况下还可以,但是当我尝试使用Rcpp :: pt时,我没有成功.我的代码在这里.
#include <Rcpp.h>
// [[Rcpp::export]]
Rcpp::DataFrame myrandom2(Rcpp::NumericVector x) {
int n = x.size();
Rcpp::NumericVector y1(n);
y1 = Rcpp::pt(x,3.0,0,1,0);
return Rcpp::DataFrame::create(Rcpp::Named("T") = y1);
}
sourceCpp("random2.cpp")
myrandom2(c(0.5,1))
/Library/Frameworks/R.framework/Versions/3.0/Resources/library/Rcpp/include/Rcpp/stats/nt.h: In function ‘Rcpp::stats::P2<RTYPE, NA, T> Rcpp::pt(const Rcpp::VectorBase<RTYPE, NA, VECTOR>&, double, double, …Run Code Online (Sandbox Code Playgroud) 我正在尝试运行“与 Rcpp 进行无缝 R 和 C++ 集成”的代码(第 32 页,清单 2.10),但它给出了错误。有人可以向我解释为什么不起作用吗?谢谢
Code <- '
#include <gsL/gsl_const_mksa.h> // decl of constants
std::vector<double> volumes() {
std::vector<double> v(5);
v[0] = GSL_CONST_MKSA_US_GALLON; // 1 US gallon
v[1] = GSL_CONST_MKSA_CANADIAN_GALLON; // 1 Canadian gallon
v[2] = GSL_CONST_MKSA_UK_GALLON; // 1 UK gallon
v[3] = GSL_CONST_MKSA_QUART; // 1 quart
v[4] = GSL_CONST_MKSA_PINT; // 1 pint
return v;
}'
gslVolumes <- cppFunction(code, depends="RcppGSL")
Run Code Online (Sandbox Code Playgroud)
这是消息错误:
file16e2b6cb966.cpp: In function ‘SEXPREC* sourceCpp_52966_volumes()’:
file16e2b6cb966.cpp:30: error: ‘__result’ was not declared in this scope
make: …Run Code Online (Sandbox Code Playgroud) 我已经开始使用Julia语言,但即使是基本的操作,我也很惊讶得到看似不正确的结果:
julia> 0.05*0.05
0.0025000000000000005
Run Code Online (Sandbox Code Playgroud)
和
julia> 1.0-0.85-0.1
0.05000000000000002
Run Code Online (Sandbox Code Playgroud)
怎么会这样?我该怎么做才能获得准确的结果?