2016-08-17 2 views
0

변수 문자열을 기반으로 행을 필터링하려는 데이터 테이블이 있습니다.변수를 사용하여 데이터 테이블의 행 선택

mtcars=as.data.table(mtcars) 
mtcars[cyl>=4] 

위의 작동하지만이되지 않습니다 : 예를 들어

str='cyl>=4' 
mtcars[str] 

내가 [[STR] 시도했지만 그 중 하나가 작동하지 않습니다. 당신의 도움이

+2

'str = quote (cyl> = 4); mtcars [eval (str)]'. FAQ는 문서의 일부로 간주되며 기본 기능에 대해 질문하기 전에 전체를 읽어야합니다. 질문 1.16입니다 : https://rawgit.com/wiki/Rdatatable/data.table/vignettes/datatable-faq.html#ok-but-i-dont-know-the-expressions-in-advance.-how- do-i-programatically-pass-them-in 지원 페이지에서 언급 된 다른 리소스는 다음과 같습니다. https://github.com/Rdatatable/data.table/wiki/Support – Frank

+0

나는 이것을 생각하지 않습니다. 중복 된 질문입니다. 내가 찾을 수있는 유일한 질문은 j에 관한 것입니다. 언급 된 FAQ는 i에서이를 수행하는 방법에 대해 명확하지 않습니다. 변수 대신 하드 코딩 된 "cyl> = 4"가 필요하기 때문에 주석에 대한 귀하의 답은 저에게 맞지 않습니다. Dean이 제공 한 대답이 효과가 있습니다. –

+0

예. 너 이걸 원해? http://stackoverflow.com/questions/1743698/evaluate-expression-given-as-a-string eval-parse-text 경로는 data.table에 고유하지 않으며 일반적으로 권장되지 않습니다. fyi : http : // stackoverflow. com/q/13649979/'i'를 다루지 않는 FAQ에 대해서는 위의 지원 링크를 사용하여 피드백/기능 요청으로 가져올 수 있습니다. 패키지 작성자는 새 사용자가 비 네트에서 찾는 간격에 관심이있을 것이라고 확신합니다. – Frank

답변

1

에 대한

감사는이를 사용하는 습관을 얻을 수있는 가장 좋은 방법은 아니다. 어떤 프로세스가 문자열을 생성하는지 다시 생각해 보는 것이 좋습니다. 그걸로 할 수 있다고 했어.

mycars[eval(parse(text=str))] 
관련 문제