2017-10-10 62 views
1

我試圖轉換一個data.table中的某個特定字符串「_cat」分類數據類型。 data.table中的列總數很大(超過700),我不想通過700多列來找出哪些列中的_cat用於更改數據類型。 (它們是隨機遍佈data.table)通過只匹配列名稱中的字符串模式將大量data.table列轉換爲因子

首先我得到的邏輯數組,指示其列在他們的名字「_cat」:

cat_id <- grepl('_cat', colnames(dt)) 

不知何故,我不得不使用這個CAT_ID邏輯向量轉換cat_id中的TRUE對應的列爲因子。我不知道如何子句中使用排除列沒有圖案(那些這CAT_ID項是FALSE)

dt <- dt[, lapply(.SD, as.factor), by = ??? ] 

回答

3

這不是一個GROUP BY操作。用於選擇的列,使用.SDcols然後分配(:=)輸出回感興趣

dt[, (cat_id) := lapply(.SD, factor), .SDcols = cat_id ] 

其中

cat_id <- grep('_cat', colnames(dt), value = TRUE)