当我运行以下代码时,我收到一些我不理解的错误消息 -
“add_f”之前的预期初始化程序
没有匹配的函数可用于调用 'try_grid::try_grid(Rcpp::NumericMatrix&, Rcpp:: NumericMatrix&, int&)
有人可以解释我做错了什么吗?
.cpp 文件:
#include <Rcpp.h>
using namespace Rcpp;
//Declaring a structure
struct try_grid
{
NumericMatrix x;
NumericMatrix y;
int size;
}
// Declaring function
Void add_f(const try_grid&);
// [[Rcpp::export]]
NumericMatrix plussomething(NumericMatrix samp, NumericMatrix tramp, int size)
{
// Declaring and defining output matrix
NumericMatrix sol(size, size);
// Initialising members of the structure
struct* try_grid m = {samp, tramp, size};
// operation
try_grid add_f(m);
// Creating output
for(int i=0; i<size; i++)
{
for(int j=0; j<size; j++)
{
sol(i,j) = m.x(i,j) + m.y(i, j);
}
}
return(sol);
}
// Defining function
try_grid add_f(NumericMatrix x, NumericMatrix y, int size)
{
for(int i=0; i<size; i++)
{
for(int j=0; j<size; j++)
{
if(x(i,j) == 0 && y(i,j) != 0)
{
x(i,j) = y(i,j);
}
if(y(i,j) == 0 && x(i,j) != 0)
{
y(i,j) = x(i,j);
}
}
}
return try_grid(x, y, size);
}
R代码:
#Creating a matrix
samp <- matrix(0, 5, 5)
samp[3,3] <- 1
tramp <- matrix(0, 5, 5)
tramp[2,2] <- 2
sss <- 5
#Accessing the Rcpp file
sourceCpp('rcppfunction.cpp')
您用大写字母 V 写了
Void
。这不作为关键字存在 - 请使用 void
。 还有错误信息
expected initializer before 'add_f'
提示,