2017-11-03 7 views
0

기능의 일부로 character 또는 factor 인 모든 기능을 분리하려고합니다. 내 데이터 세트는 data.table입니다.data.table - 모든 텍스트 기능 추출

text_features <- c(names(data_set[sapply(data_set, is.character)]), names(data_set[sapply(data_set, is.factor)])) 

나는 말한다 예외 메시지가 무엇입니까 기능을 실행하면 :

오류 [.data.table (data_set, sapply (data_set, is.character))에서 : 내가 논리적 벡터로 평가 길이 87이지만 12992 개의 행이 있습니다. 논리적 인 i의 재활용은 더 이상 사용하지 않는 것보다 더 많은 버그를 숨기므로 더 이상 허용되지 않습니다. 정말로 재활용해야하는 경우 rep (..., length = .N)를 명시 적으로 사용하십시오.

이 오류는 최신 버전 data.table에 의해 발생하는 것으로 알고 있습니다.이 오류를 피하기 위해 동일한 방법으로 코드를 변경하려면 어떻게해야합니까?

참고 : 당신은 당신이 당신의 내면 data.tables을 부분 집합하는 잘못된 장소에 쉼표를 가지고 있기 때문에

packageVersion("data.table") 
[1] ‘1.10.4.3’ 

감사

답변

2

오류는 점점이다.

data_set[sapply(data_set, is.character)] # subsetting rows 
data_set[,sapply(data_set, is.character), with = FALSE] # subsetting columns 

말했다 모두, 나는 깔끔한 해결 될 것이라고 생각 :

text_cols <- names(data_set)[sapply(data_set, class) %in% c("character","factor")] 
data_set[, ..text_cols] # subset data 
+0

덕분에,이 내가 찾던 무엇 당신은 열이 아닌 행의 하위 집합을 원한다. 사실, 필자는 이전에'read.csv'를 사용하기 위해 필자의 함수가 이전에 구성되어있는 것을 보았습니다. 그래서 쉼표를 썼습니다. 나는'data.table'을 위해 일할 수있는 완전한 기능을 검토 할 필요가 있다고 생각합니다 - 당신의 지원에 감사드립니다. – Michael