基本的にリストであるコンテナクラスがあります。サブセット化をサポートしたかったので、サブセット[
演算子をオーバーロードしました (実装が不十分である可能性があります)。
#' Constructor for spectra object
.spectra = function(n_spectrum = 0) {
object = vector(mode = "list", n_spectrum)
class(object) = "spectra"
return(object)
}
#' Operator overload
#' @export
`[.spectra` = function(x, i) {
x = unclass(x)
x = x[i] # Using the list's subset function
class(x) = "spectra"
return(x) # Should return a "spectra" object, not a list
}
これで、開発環境 (パッケージのデバッグ時) では期待どおりに動作します。つまり、y_old
がspectra
オブジェクトであり、私が行う場合でも、 はy_new = y_old[-1]
オブジェクトです。y_new
spectra
ただし、プロジェクトをパッケージとしてコンパイルしてインストールすると、サブセット演算子はオブジェクトではlist
なくa を返しspectra
ます。
何が起こっているかの手がかりはありますか?
編集
RStudio とdevtools
ライブラリを使用していることを忘れていました。