Im częściej go używam, tym bardziej data.table
zastępuje dplyr
jako mój pakiet "goto", ponieważ prędkość, którą oferuje, to duży plus.r - przekazywanie zmiennych jako data.table nazw kolumn
Pytanie
można przekazać zmienne do i
w data.table (dt[i,j]
) withouth tworzenia expression
?
Przykład
Biorąc pod uwagę data.table:
library(data.table)
dt <- data.table(val1 = c(1,2,3),
val2 = c(3,2,1))
Chciałbym evalulate:
dt[(val1 > val2)]
ale stosując zmienną odwoływać się do nazw kolumn. Na przykład,
myCol <- c("val1", "val2") ## vector of column names
Czytałem lots of questions które pokazują sposoby robienia tego z wyrażeń:
## create an expression to evaluate
expr <- parse(text = paste0(myCol[1], " > ", myCol[2]))
## evaluate expression
dt[(eval(expr))]
val1 val2
1: 3 1
ale zastanawiałem się, czy istnieje bardziej „bezpośredni” sposobem na to, że Wcześniej brakowało, coś w rodzaju:
dt[(myCol[1] > myCol[2])]
Albo jest droga expression
sposób należy to zrobić?
@mailmail Dzięki, dodał. – akrun
Czy słusznie byłoby powiedzieć, że 'eval (as.name (...)) == get()'? – tospig
@tospig Ten [link] (http://adv-r.had.co.nz/Expressions.html) dałby więcej pomysłów. – akrun