Tôi càng sử dụng nó, càng có nhiều data.table
thay thế dplyr
làm gói 'goto' của tôi với tốc độ lớn hơn.r - biến biến là tên cột data.table
Câu hỏi
Bạn có thể vượt qua các biến để i
trong data.table (dt[i,j]
) withouth tạo ra một expression
?
Ví dụ
Cho một data.table:
library(data.table)
dt <- data.table(val1 = c(1,2,3),
val2 = c(3,2,1))
Tôi muốn evalulate:
dt[(val1 > val2)]
nhưng sử dụng một biến để tham khảo các tên cột. Ví dụ,
myCol <- c("val1", "val2") ## vector of column names
Tôi đã đọc một lots of questions cho thấy cách để làm điều này với các biểu thức:
## create an expression to evaluate
expr <- parse(text = paste0(myCol[1], " > ", myCol[2]))
## evaluate expression
dt[(eval(expr))]
val1 val2
1: 3 1
Nhưng tôi đã tự hỏi nếu có một cách hơn 'trực tiếp' để làm điều này mà tôi đã bị mất, một điều gì đó giống như:
dt[(myCol[1] > myCol[2])]
Hoặc là cách thực hiện điều này?
@thelatemail Xin cảm ơn, đã thêm nó. – akrun
Sẽ đúng khi nói rằng 'eval (as.name (...)) == get()'? – tospig
@tospig [link] này (http://adv-r.had.co.nz/Expressions.html) sẽ cung cấp thêm ý tưởng. – akrun