功能stats::model.matrix
可用於一個輸入數據幀轉換成適用於生產代數運算的矩陣求解迴歸方程等。例如:如何僅使用model.matrix生成截距?
set.seed(0)
df <- data.frame(a = rnorm(5), n = rnorm(5))
model.matrix(~., data = df)
生產:
(Intercept) a n
1 1 1.2629543 -1.539950042
2 1 -0.3262334 -0.928567035
3 1 1.3297993 -0.294720447
4 1 1.2724293 -0.005767173
5 1 0.4146414 2.404653389
之一功能是它控制如何將截距添加到設計矩陣中。比較:model.matrix(~ 0 + ., data = df)
VS model.matrix(~ 1 + ., data = df)
現在,公式中的.
指定的df
所有變量應包括在內。這就導致了一個問題,當我想傳遞一個空的數據幀,從而創造公正的攔截,如:
df <- data.frame(matrix(, nrow=5, ncol=0))
model.matrix(~ ., data = df)
導致:
Error in terms.formula(object, data = data) :
'.' in formula and no 'data' argument
有誰知道如何解決這個問題,以具體而言,除了使用.
之外,我想產生model.matrix(~ 1, data = df)
給出的以下結果。
'if(ncol(df)== 0)model.matrix(〜1,data = df)else model.matrix(〜。,data = df)' – Gregor
這對我有幫助,但是,如果沒有if語句,是否有更直接的方法將某個對象傳遞給model.matrix。 – Alex
請問您爲什麼要傳遞一個空的data.frame ?.從無到有做一個公式是很奇怪的。最多可以有1列data.frame與1s代替。考慮這個'model.matrix(〜1,data = data.frame(rep(1,10)))' – DJJ