Minimální příklad:
dt <- data.table(a=c(1,2,3),b=c(4,5,6))
To vypadá jako, že:
> dt
a b
1: 1 4
2: 2 5
3: 3 6
Předpokládám, že chci, aby index na sloupci, kde je 6
hodnota, v této hračky příklad je to velmi jednoduché, protože víme, sloupec:
> dt[,.(b)]
b
1: 4
2: 5
3: 6
Teď co když dt
měl několik tisíc sloupů a nevěděli bychom, kde 6
spočívá.
Zkoušel jsem toto:
> dt[,.SD==6]
a b
[1,] FALSE FALSE
[2,] FALSE FALSE
[3,] FALSE TRUE
a to:
> dt[,lapply(.SD,`==`,6)]
a b
1: FALSE FALSE
2: FALSE FALSE
3: FALSE TRUE
a také, že:
> dt[,lapply(.SD,function(x) any(x==6))]
a b
1: FALSE TRUE
Ale nemůžu se dostat na původní sloupec zpět:
b
1: 4
2: 5
3: 6