데이터 테이블의 일부 변수를 얻기 위해 조건문을 사용하려고합니다. 그들은 V2와 V3로 표시 즉, 조건식, 그들은 정상적으로하지만 할당 된 변수 이름 'riskybet'과 '승리'없이 노력하고 있습니다data.table의 조건문
> dt
id trial bet outcome
1: 11 1 1 6
2: 11 2 456 2
3: 11 3 3456 3
4: 11 4 456 6
5: 12 1 34 6
6: 12 2 3456 2
7: 12 3 12 4
8: 12 4 123 2
dt1=dt[,list(
nbet=nchar(bet),
if (nchar(bet)>2.5) riskybet=1 else riskybet=0,
if (grepl(outcome,bet)==TRUE) win=1 else win=0),
by='id,trial']
> dt1
id trial nbet V2 V3
1: 11 1 1 0 0
2: 11 2 3 1 0
3: 11 3 4 1 1
4: 11 4 3 1 1
5: 12 1 2 0 0
6: 12 2 4 1 0
7: 12 3 2 0 0
8: 12 4 3 1 1
: 다음은 몇 가지 간단한 데이터, 코드와 결과입니다. 내가 도대체 뭘 잘못하고있는 겁니까?
사이드 코멘트 : '1 * (nchar (bet)> 2.5)'는 첫 번째 if 문을 표현하는 짧은 방법이고'1 * grepl (outcome, bet)'은 두 번째를 수행하는 동일한 방법입니다. – Dennis
id 및 trial은 고유 한 행을 결정하기 때문에 if 문은 작동한다고 생각합니다. 또한, nchar을 두 번 계산하지 않아도됩니다. {nbet = nchar (bet); 목록 (nbet = nbet, riskybet = 1 * (nbet> 2), win = 1 * grepl (결과, 내기))} – Frank