考虑以下三个 Rcpp 函数:
void f(Rcpp::S4 A) {
Rcpp::NumericVector x = A.slot("x");
x[0] = 42;
}
void g(Rcpp::S4 A) {
Rcpp::NumericVector x = A.slot("x");
x.push_back(42);
}
void h(Rcpp::S4 A) {
Rcpp::NumericVector x = A.slot("x");
x.push_back(42);
A.slot("x") = x;
}
Run Code Online (Sandbox Code Playgroud)
然后,将这些函数应用于 S4 类的实例,我得到:
> setClass(Class = "VectorClass", slots = list(x = "numeric"))
> A <- new("VectorClass", x = c(0))
> f(A)
> A
An object of class "VectorClass"
Slot "x":
[1] 42
> A <- new("VectorClass", x = c(0))
> g(A)
> …Run Code Online (Sandbox Code Playgroud)