0
この質問はhereとhereの前に尋ねられました。データセットに欠落データがありません。model.frame
からmodel.matrix
を作成しようとしています。再現可能な例を次に示します。model.frame.default(object、data、xlev = xlev)のエラー:可変長が異なる( 'z'のために見つかりました)
dat = data.frame(x = rep(1:3, each = 5),
y = rnorm(15),
z = rep(c(1,1.1,1.3), each = 5))
# this works
mt = model.matrix(model.frame(lm(y ~ x,dat)))
# this produces the error
mt = model.matrix(model.frame(lm(y ~ x + z,dat)))
なぜこの問題を解決するのですか?あるいは、インターセプト列を使用して右辺値の行列を別の、効果的かつ堅牢な方法で取得するにはどうすればよいですか?
'mt = model.matrix(model.frame(lm(y〜x、dat)))'実行しないでください。 – cuttlefish44
@ cuttlefish44が正しいです、あなたがそれを書いたように、そのコード行は実行されません。それは関数が期待する引数を調べるために 'help(" model.matrix ")'を見る必要があるからです。最初の引数として数式または用語オブジェクトが必要です。 'model.matrix(y〜x + z、model.frame(lm(y〜x + z、dat))')を試してください。 – duckmayr
'model.matrix'にはデフォルトとlmメソッドがあります。最初に 'model.matrix(y〜x + z、dat)'と書くか、 '' lm'オブジェクトの関数として書く必要があるなら 'model.matrix(lm(y〜x + z、 dat)) ' –