解析されたRコードを操作しようとしていて、=演算子で問題が発生しました。このスニペットが示すように、その型が "言語"であるというオブジェクトを取得できますが、RがS4クラスのスロットに値を代入するときに使用する "is"テストではfalseを返します。 - 演算子=の代わりに使用され、予想通り、コードが動作する<があればということ構文解析= Rの演算子は言語オブジェクトを生成しません
Error in (function (cl, name, valueClass) :
assignment of an object of class “=” is not valid for @‘s1’ in an object of class “Foo”; is(value, "language") is not TRUE
注:この最後の行はエラーに生成
parsed <- parse(text = "cylinders = c(4, 6, 8)")
print (typeof(parsed)) # Prints "expression"
langObj <- parsed[[1]]
print (typeof(langObj)) # Prints "language"
print (is(langObj, "language")) # Prints FALSE
setClass("Foo",
slots = list(
s1 = "language")
)
setMethod ("initialize",
"Foo",
function(.Object, obj){
[email protected] <- obj
return (.Object)
}
)
new (Class = "Foo", langObj)
:ここ
は、いくつかのサンプルコードです。"typeof"と "is"の違いは何ですか?なぜ=演算子は< - は "言語"の値を生成しないのですか?
なぜ '='かという簡単な答えは有効な言語オブジェクトではない''( ''、' ')」と書かれていますが、これは明示的に' '(' '、' ' 、 、 "の" 、 "IF" ' "{"、 を "一方"、 "名前" を "繰り返し"。 – nrussell
' is.language(langObj)を使用して 'TRUE印刷されます。 場合目的は、あなたが評価できるようにしたいという表現を持つことです'langObj < - parsed'と' setClass( "Foo"、slots = list(s1 = "expression")) 'を使って割り当ててください。 –