r - data.table 中的变量用法

标签 r data.table

这个问题在这里已经有了答案:





Keyed lookup on data.table without 'with'

(4 个回答)



Subsetting data.table using variables with same name as column

(2 个回答)


2年前关闭。




这一定是非常基本的事情,但我不知道如何使用与 data.table 列同名的真实变量。我可以使用不同的变量名来避免冲突,但我想知道是否有办法在放弃 DT 之前评估变量。

> DT = data.table(ID = c("b","b","b","a","a","c"), a = 1:6, b = 7:12, c=13:18)
> DT
   ID a  b  c
1:  b 1  7 13
2:  b 2  8 14
3:  b 3  9 15
4:  a 4 10 16
5:  a 5 11 17
6:  c 6 12 18
> DT[b == 7]
   ID a b  c
1:  b 1 7 13
> b <- 7
> DT[b == b]
   ID a  b  c
1:  b 1  7 13
2:  b 2  8 14
3:  b 3  9 15
4:  a 4 10 16
5:  a 5 11 17
6:  c 6 12 18

最佳答案

由于您有两个名为 b 的变量, 一内DT和一个在 DT 范围之外的,我们得去拿b <- 7来自全局环境。我们可以用 get() 做到这一点.

DT[b == get("b", globalenv())]
#    ID a b  c
# 1:  b 1 7 13

更新:您在评论中提到变量位于函数环境中。在这种情况下,您可以使用 parent.frame()而不是 globalenv() .
f <- function(b, dt) dt[b == get("b", parent.frame(3))] 

f(7, DT)
#    ID a b  c
# 1:  b 1 7 13
f(12, DT)
#    ID a  b  c
# 1:  c 6 12 18

关于r - data.table 中的变量用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34077955/

相关文章:

r data.table::dcast 交叉产品在大数据集上失败

r - 使用 data.table 根据 R 中的 B 列有条件地删除 A 列中匹配的行

r - R中带有data.table的交叉表

r - 数据争论 : Aggregating by group sequentially reducing

r - 使用 data.table 为行 block 创建组标签

r - 在 R 中使用 diffObj 时显示新行(不是新行字符)?

r - 按组计算连续行中的值之间的差异

r - 如何将文本添加到 r 中的绘图箱线图中

r - ggplot 在一个图上绘制两个渐变填充

r - 使用外部包的foreach并行计算