r-将变量作为data.table列名传递
我使用的越多,数据就越多。table正在取代dplyr成为我的“goto”软件包,因为它提供的速度是一个很大的优势 问题 在不创建r-将变量作为data.table列名传递,r,data.table,R,Data.table,我使用的越多,数据就越多。table正在取代dplyr成为我的“goto”软件包,因为它提供的速度是一个很大的优势 问题 在不创建表达式的情况下,能否将变量传递给data.table(dt[i,j])中的i 示例 给定一个data.table: library(data.table) dt <- data.table(val1 = c(1,2,3), val2 = c(3,2,1)) 但是使用变量来引用列名。比如说, myCol <- c("val
表达式的情况下,能否将变量传递给data.table(dt[i,j]
)中的i
示例
给定一个data.table:
library(data.table)
dt <- data.table(val1 = c(1,2,3),
val2 = c(3,2,1))
但是使用变量来引用列名。比如说,
myCol <- c("val1", "val2") ## vector of column names
或者,表达式
路由是否应该这样做?我们可以使用eval(as.name(…
或者我们可以在.SDcols
dt[dt[, .I[.SD[[1]]> .SD[[2]]], .SDcols= myCol]]
或者使用@thelatemail的get
选项
dt[get(myCol[1]) > get(myCol[2])]
如果只有两个元素,我们也可以使用Reduce
和mget
(与@thelatemail的答案略有不同)
如果说eval(as.name(…)==get()
?@tospig这会给出更多的想法。
dt[(myCol[1] > myCol[2])]
dt[eval(as.name(myCol[1]))> eval(as.name(myCol[2]))]
dt[dt[, .I[.SD[[1]]> .SD[[2]]], .SDcols= myCol]]
dt[get(myCol[1]) > get(myCol[2])]
dt[Reduce('>', mget(myCol))]