【发布时间】:2017-12-09 08:09:31
【问题描述】:
library(Rcpp)
library(geoR)
elevationd=as.matrix(data.frame(xcoords=elevation$coords[,1],
ycoords=elevation$coords[,2], elev=elevation$data))
elevationd
cppFunction('void a(NumericMatrix data){
int nr = data.nrow();
int nc = data.ncol();
NumericVector tmp;
for (int i; i<nr; i++){
tmp[i] = data(i,2);
}
NumericMatrix mat(nr, nr);
for (int i; i<nr; i++){
for (int j; j<nr; j++){
mat(i,j) = (tmp[i] - tmp[j])*(tmp[i] - tmp[j]);
}
}
}')
a(elevationd)
我有一个这样的 r 代码。
但是当我实现这个时,我得到“R 会话中止。R 遇到致命错误。会话已终止。”消息。
但我的代码没有发现任何问题。
不知道是不是硬件问题........不是我的代码T.T
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
感谢德克
这是我编辑的代码。
cppFunction('NumericMatrix f1(NumericMatrix data){
int nr = data.nrow();
int nc = data.ncol();
NumericMatrix mat(nr, nr);
for (int i=0; i<nr; i++){
for(int j=0; j<nr; j++){
mat(i,j) = (data(i,2)-data(j,2))*(data(i,2)-data(j,2));
}
}
return mat;
}')
【问题讨论】:
-
查找一些关于 C++ 循环的教程。您需要将 i 初始化为一个值。