言語要素を扱う場合、いくつかのルールが変更されます。結果にラベルを付けるために 1 つまたは 2 つの文字列が必要なようですが、最初の "mof" オブジェクトで作成したのは、モデル自体ではなく、モデルの名前だけの文字ベクトルです。
> str(mof)
'data.frame': 3 obs. of 1 variable:
$ V1: chr "m01" "m02" "m03"
文字ベクトルを使用してワークスペースからモデルを取得するには、 を使用する必要がありますget
。formula
その後、関数およびを使用してさらに処理することができますas.character
。クラス式のオブジェクトは有効なデータフレーム コンポーネントではないため、最後にキャラクター モードに「戻る」必要があります。1 つのネストされた呼び出しで、これは次のようになります。
> forms.mat <- sapply( lapply( lapply(mof$V1, get) , formula), as.character)
> forms.mat
[,1] [,2] [,3]
[1,] "~" "~" "~"
[2,] "g" "g" "g"
[3,] "ab + I(r^2) + cos(pi * h)" "I(ab^3) + r + cos(pi * h) + sin(pi * h)" "ab + r"
次のように再配置できます (LHS 式と RHS 式の間にチルダを戻し、(collapse="" を使用して) 一緒に貼り付けます):
> apply(forms.mat[ c(2,1,3),], 2, paste, collapse="")
[1] "g~ab + I(r^2) + cos(pi * h)" "g~I(ab^3) + r + cos(pi * h) + sin(pi * h)"
[3] "g~ab + r"
リストを操作するだけで、これを少し単純化できたかもしれません。
> mof2 <- list(m01,m02,m03) # Skipping the search of the workspace and reconstitution
> lapply(mof2, formula)
[[1]]
g ~ ab + I(r^2) + cos(pi * h)
<environment: 0x2ef997c60>
[[2]]
g ~ I(ab^3) + r + cos(pi * h) + sin(pi * h)
<environment: 0x19fef52d0>
[[3]]
g ~ ab + r
<environment: 0x19fef68d8>
> sapply( lapply(mof2, formula), as.character )
[,1] [,2] [,3]
[1,] "~" "~" "~"
[2,] "g" "g" "g"
[3,] "ab + I(r^2) + cos(pi * h)" "I(ab^3) + r + cos(pi * h) + sin(pi * h)" "ab + r"