2017-09-09 59 views
0

由於我使用的交叉驗證與許多不同的算法,我決定給自己建了以下功能:警告R中建立一個功能時

crossFun <- function(myseed, vars, labels, par, tim, algo, len) { 
    set.seed(myseed) 
    multiFolds <- createMultiFolds(labels, k = par, times = tim) 
    cv_ctrl <- trainControl(method ='repeatedcv', number = par, repeats = tim, index = multiFolds) 

    cl <- makeCluster(3, type = 'SOCK') 
    registerDoSNOW(cl) 

    result <- train(x = vars, y = labels, method = algo, tuneLength = len, trControl = cv_ctrl) 

    stopCluster(cl) 

    return(result) 
} 

功能的工作,但其結果,得到以下警告:

警告消息:不建議在tibble上設置行名。

我找不到任何明確的解釋。我試着用不同的方式編寫函數,但似乎沒有任何東西可以擺脫這個信息。

任何想法是什麼意思?

+0

看來警告來自您要調用的某個函數。如果是這樣,那麼你可以做的事情就不多了,除非可能試着確定警報發生的位置。 'print(class(obj))',其中'obj'是一個對象,比如'multiFolds','cv_ctrl'等可能會有所幫助。 –

回答

0

tidyverse方式鼓勵不使用rownames。 您總是可以用as.data.frame()強制回到基礎數據框。 鼓勵的方式是使用tibble::rownames_to_column()使rownames成爲一個新變量。

請參閱this issue

+0

我不確定我瞭解你。我之前讀過這個問題,但沒有看到它與我的功能有什麼關係。 – Mark2Bra

+1

@ Mark2Bra您的警告與問題中相同。 「已棄用」意味着已將其從包中刪除,並且您現在有警告,但未來版本中可能會出現錯誤(讓您有時間更新代碼)。 –