別の参照クラス内でカスタム参照クラスを使用したいのですが、このコードは失敗します:
nameClass <- setRefClass("nameClass", fields = list(first = "character",
last = "character"),
methods = list(
initialize = function(char){
chunks <- strsplit(char,"\\.")
first <<- chunks[[1]][1]
last <<- chunks[[1]][2]
},
show = function(){
cat("Special Name Class \n:")
cat("First Name:")
methods::show(first)
cat("Last Name:")
methods::show(last)
}
))
# this works fine
nameClass$new("tyler.durden")
クラスのフィールドを持つ 2 番目のクラスを追加しようとすると、nameClass
このクラスを開始できません。
personClass <- setRefClass("personClass", fields = list(fullname = "nameClass",
occupation = "character"),
methods = list(
initialize = function(Obj){
nm <- deparse(substitute(Obj))
fullname <<- nameClass$new(nm)
occupation <<- Obj
}))
これは単に返されます:
Error in strsplit(char, "\\.") :
argument "char" is missing, with no default
nameClass が S4 クラスであるソリューションを想像することはできましたが、少し読んで、S4 と参照クラスを混在させるのが少し怖くなりました。この特定の名前フィールドを単なる「文字」よりも正確に定義したい場合、何か不足していますか、それとも単純に S4 クラスを使用する必要がありますか?
また、有望なタイトルのこのスレッドを見つけましたが、これが私の問題をどのように解決できるかわかりませんでした。