2015-05-08 69 views
0

我想創建一個函數來訓練和測試10個獨立的數據集,在兩個列表中。下面是列出:如何測試和訓練兩個列表形式的多個數據集?

blend_30_d<-list(desktop_30_1, desktop_30_2, desktop_30_3, desktop_30_4, desktop_30_5, desktop_30_6, desktop_30_7, desktop_30_8, desktop_30_9, desktop_30_10) 

blend_30_td<-list(desktop_30_t1, desktop_30_t2, desktop_30_t3, desktop_30_t4, desktop_30_t5, desktop_30_t6, desktop_30_t7, desktop_30_t8, desktop_30_t9, desktop_30_t10) 

每個單獨的數據集的名稱:

[1] 「日期」, 「Wkday」, 「展示次數」 「點擊次數」 「TOTAL_COST」 「單元」
[7] 「1月」「2月」「3月」「4月」「5月」「6月」
[13]「7月」「8月」「9月」「10月」「11月」星期二「」星期三「」星期四「」星期五「」星期六「
[25]」星期天「」Vday「」Tgiving「」Xmas「」XmasE「 「除夕」
[31] 「NYD」 「July4」 「勞動」, 「紀念」 「Mob_App_Launch」 「Auto_Approve_Launch」

我已經建立了以下功能 - 我想blend_30_d [1],打出了反對blend_30_td測試[ 1]。

d_cost <- function(train, test){ 
    ####Run regression on training 
    q<-lm(Total_Cost ~ . -date - Wkday - Imps - Clicks + poly(date, 2), data=train) 
    ####Predict values into test set 
    test_cost_d <- predict.lm(q, x=test) 
    ####Calculate R^2 between predicted vs. actual values 
    z<-(cor(test_cost_d, test$Total_Cost))^2 
} 

d_cost(blend_30_d, blend_30_td) 

我收到以下錯誤: 錯誤terms.formula(式中,數據=數據): 重複名稱「日期」在數據幀用「」

我不確定這是兩個清單的正確方法......有什麼建議嗎?謝謝!

回答

0

d_cost您的d_cost函數的構建需要兩個數據幀,一個用於測試,另一個用於訓練。您試圖通過傳遞兩個數據框列表來調用它。您一次構建了一對數據框的函數,因此您需要給它一對,而不是兩對的列表。嘗試是這樣的:

z = rep(NA, length(blend_30_d) 
for (i in seq_along(blend_30_d) { 
    z[i] = d_cost(blend_30_d[[i]], blend_30_td[[i]]) 
} 
+0

這非常適用於在10集 - 不幸的是,R^2個值(Z)仍然關閉。現在我認爲我的q值可能也需要循環? – user2573355

+0

@ user2573355聽起來好像你遇到了麻煩,因爲你試圖一次完成所有的事情。一次做一件事。不要從10個數據幀開始。從單一的火車/測試對開始,得到你想要的,然後從那裏建立。 – Gregor

0

我想你可能需要添加一個循環:

for(i in 1:10){ 
    d_cost(train[[i]], test[[i]]) 
} 
相關問題