我正在處理具有1900列和大約280,000行的data.table。使用data.table set()將所有列從整數轉換爲數字
目前,數據完全是「整數」,但我希望它們明確地「數字」,以便稍後將它傳遞給bigcor()函數。顯然,bigcor()只能處理「數字」而不是「整數」。
我曾嘗試:
full.bind <- full.bind[,sapply(full.bind, as.numeric), with=FALSE]
不幸的是,我得到的錯誤:
Error in `[.data.table`(full.bind, , sapply(full.bind, as.numeric), with = FALSE) :
j out of bounds
所以,我嘗試使用data.table set()函數,但我得到的錯誤:
Error in set(full.bind, value = as.numeric(full.bind)) :
(list) object cannot be coerced to type 'double'
我已經創建了一個簡單的可重複的例子。請記住,實際的列不是「a」,「b」或「c」;它們是非常複雜的列名,因此單獨引用列不是一種可能性。
dt <- data.table(a=1:10, b=1:10, c=1:10)
所以,我最後的問題是:
1)爲什麼我的sapply技術不行? (什麼是「j越界」錯誤?) 2)爲什麼set()技術不是? (爲什麼data.table不能強制爲數字?) 3)bigcor()函數是否需要數字對象,還是存在另一個問題?
收到答案後,不會刪除問題。你有免費的幫助,所以請儘量感激。 –
我實際上試圖在發佈後立即刪除它,因爲我在其他地方找到了答案。對於那個很抱歉! –
不確定'data.frame'和'data.table'之間的差異(所以也許這是不相關的,對不起!),但是我發現'dplyr'在這裏很有幫助:'mutate_if(df,is.integer,as。數字)將所有整數列轉換爲數字:乾淨,簡潔,快捷。 – dwanderson