rda()
モードで呼び出されると、データフレームを取得しrda(X, Y, Z)
ます。の議論は?rda
コミュニティデータマトリックスについて取りますが、データフレームは受け入れ可能であり、それらの入力を経由as.matrix()
して変換するときに想定されることさえあり、そこに問題があります。
rda()
数式で呼び出すのはばかげています。data
あなたができるように議論があります:
rda(dune ~ A1 + Moisture + Management + Condition(Use + Manure), data = dune.env)
これはやや簡単で冗長ではありません。
ショートカットを取ることもできます、
rda(dune ~ . + Condition(Use + Manure), data = dune.env)
モデルの適合に必要な変数を利用.
し、データオブジェクトにのみ含めることによって。
そして、Rに式を作成させることで、これを行うことができます。
nams <- names(dune.env)
form <- formula(paste("dune ~", paste(nams[1:3], collapse = " + "),
"+ Condition(", paste(nams[4:5], collapse = " + "), ")"))
rda(form, data = dune.env)
これは複雑に見えるかもしれませんが、関数に簡単にラップできます。
buildF <- function(X, Y, Z, data) {
nams <- names(data)
X <- deparse(substitute(X))
f <- formula(paste(X, " ~", paste(nams[Y], collapse = " + "),
"+ Condition(", paste(nams[Z], collapse = " + "), ")"))
environment(f) <- parent.frame()
f
}
使用中は次のようになります。
> buildF(dune, 1:3, 4:5, data = dune.env)
dune ~ A1 + Moisture + Management + Condition(Use + Manure)
> f <- buildF(dune, 1:3, 4:5, data = dune.env)
> f
dune ~ A1 + Moisture + Management + Condition(Use + Manure)
> rda(f, data = dune.env)
Call: rda(formula = dune ~ A1 + Moisture + Management +
Condition(Use + Manure), data = dune.env)
Inertia Proportion Rank
Total 84.1237 1.0000
Conditional 35.3628 0.4204 6
Constrained 27.8434 0.3310 6
Unconstrained 20.9175 0.2487 7
Inertia is variance
Some constraints were aliased because they were collinear (redundant)
Eigenvalues for constrained axes:
RDA1 RDA2 RDA3 RDA4 RDA5 RDA6
14.674 4.718 2.756 2.346 2.085 1.265
Eigenvalues for unconstrained axes:
PC1 PC2 PC3 PC4 PC5 PC6 PC7
6.6269 4.3091 3.5491 2.5465 2.3403 0.9335 0.6121
[これは他の出力とまったく同じですが、rda()
表示されていません。]