2017-10-10 17 views
1

integer에서 이름에 특정 문자열 "_cat"이있는 data.table의 일부 열을 변환하려고합니다. 범주 형 데이터 유형. data.table의 전체 열 수는 큽니다 (700 이상). 데이터 유형을 변경하기 위해 이름에 _cat이 포함 된 항목을 파악하기 위해 700 개 이상의 열을보고 싶지 않습니다.많은 수의 data.table 열을 단순히 열 이름의 문자열 패턴과 일치 시켜서 변환합니다.

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

어떻게 든 내가 변환이 CAT_ID에게 논리적 벡터를 사용해야합니다 :

먼저 내가 열 이름에 '_cat을'이 나타내는 논리적 배열을 얻을 수 (그들은 모든 data.table에 걸쳐 무작위입니다) 대응하는 열은 cat_id의 TRUE를 인수로 취합니다. 나는이 작업에 의해 그룹 아니다

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

답변

3

(CAT_ID 항목이 거짓 그하는) 패턴없이 열을 제외 절에서 사용하는 방법을 모르겠어요. 열 선택을위한 관심

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

cat_id <- grep('_cat', colnames(dt), value = TRUE) 
칼럼에 다시 출력 ( :=)를 .SDcols을 사용하고 할당