這裏一些示例數據中:應用data.frames之間的預測()兩個名單
df_1 = read.table(text = 'Year count var1
1951 12 380
1952 13 388
1953 11 400
1954 14 411
1955 14 422
1956 14 437
1957 12 451
1958 14 465
1959 13 481
1960 15 502
1961 17 522
1962 16 549
1963 14 572
1964 16 580', header = TRUE)
df_2 = read.table(text = 'Year count var1
1951 12 380
1952 13 388
1953 11 400
1954 15 411
1955 14 422
1956 15 437
1957 11 451
1958 14 465
1959 13 481
1960 15 502
1961 20 522
1962 17 549
1963 14 572
1964 16 592', header = TRUE)
lst1 = list(df_1, df_2)
#split data.frames within lst1 and create training and testing lists
lst_train = lapply(lst1, function(x) subset(x, Year < 1959))
lst_test = lapply(lst1, function(x) subset(x, Year > 1958))
我申請了支持向量機(SVM):
library(e1071)
#run SVM model for all data.frames within lst_train
svm_fit_lst = lapply(lst_train, function(x) svm(count ~ var1, data = x))
現在我渴望申請svm_fit_lst
和lst_test
data.frames但R的prediction()
功能給了我,當我運行下面的代碼中的錯誤:
svm_pred_lst = lapply(lst_test, function(x) {predict(svm_fit_lst, newdata = x)})
錯誤UseMethod(「預測」):關於「預測」 施加到的類「列表」的對象
我只希望svm_fit_lst[1]
和lst_test[1]
之間要施加的predict()
功能沒有適用的方法,和svm_fit_lst[2]
和lst_test[2]
。
有什麼建議嗎? 感謝
你實際上有'svm_fit_lst'裏面有兩個模型,它是'list',這就是你得到錯誤的原因。因此,這將工作:'{predict(svm_fit_lst [[1]],newdata = x)}' – mtoto
是的,我有兩個模型在svm_fit_lst中,我希望svm_fit_lst [1]與lst_test [1]和svm_fit_lst [ 2]通過predict()函數與lst_test [2]進行比較。 – aaaaa
你應該在這種情況下使用for循環。 – mtoto