我想在R函數中調用預測(...)。我遇到了一些與範圍有關的問題,但我無法弄清楚什麼是錯誤或如何解決它。誰能幫忙?例如:在R函數中調用預測()
df <- data.frame(x=1:20, binary.outcome=1*(runif(20, 0, 1) > 0.60))
summary(df)
logit.model <- glm(df$binary.outcome ~ df$x, family=binomial("logit"), data=df)
summary(logit.model)
PredictOnNewData <- function() {
df <- data.frame(x=51:100)
df$probability <- round(predict(logit.model, df, type="response"), digits=3)
return(df)
}
PredictOnNewData()
最後一行失敗:
錯誤
$<-.data.frame
(*tmp*
, 「概率」,值= C(0.274,0.282, :更換已20行,數據具有 50此外:警告消息: 'newdata' 有50行,但變量(多個) 發現有20行
如果我正確理解錯誤信息,它看起來像我正在傳遞的df對象預測(...)正在作爲父/全局環境中的df進行評估。那個有20行,用於訓練。但是我希望呼叫能夠預測(...)在其他 df數據幀上 - 我在PredictOnNewData函數中創建的數據幀。我怎麼能做到這一點(不改變我的數據幀的名稱)?
[現在我重新讀了這篇文章 - 我是否會倒退?在該行(df $概率< - ...)中,其中一個dfs正在以錯誤的方式進行評估,但是這是什麼?]
我也試過get(「df」,envir = sys。幀()),要明確提到想在目前的功能框架限定的DF對象:
PredictOnNewData <- function() {
df <- data.frame(x=51:100)
# df$probability <- round(predict(logit.model, df, type="response"), digits=3)
df$probability <- round(predict(logit.model, get("df", envir=sys.frame()), type="response"), digits=3)
return(df)
}
PredictOnNewData()
...返回相同的誤差作爲最後一次。
請幫忙!
絕對可以在數據幀上調用大於被用作訓練數據的數據。一個例子(運行正常):
df <- data.frame(x=1:20, binary.outcome=1*(runif(20, 0, 1) > 0.60))
summary(df)
logit.model <- glm(df$binary.outcome ~ df$x, family=binomial("logit"), data=df)
summary(logit.model)
df <- data.frame(x=1:100)
df$probability <- round(predict(logit.model, df, type="response"), digits=3)
df
這正是我想做的事 - 除了我想通過一個函數來創建的第二個自由度。我怎樣才能做到這一點?