【问题标题】:Passing function argument to data.table i将函数参数传递给 data.table i
【发布时间】:2015-02-05 22:34:31
【问题描述】:

假设我们有一个 data.table

myDT <- data.table(id = c("a", "a", "b", "b", "c"), value = 1:5)
setkey(myDT, id)

我想创建一个函数

fun <- function(id) {
  ...
}

如果

foo <- rep("b", 6)

然后

fun(foo)
# I want this to return 3 4

基本上,我想将id[[1]] 从执行环境传递给myDTi 参数。

我很难在此处访问正确的环境,正在寻求帮助。

更改函数参数的名称不是一种选择。

【问题讨论】:

  • 如果foo = c("a","b")你想要什么结果?
  • foo 始终采用rep(x ,n) 的形式,其中x \in letters

标签: r data.table evaluation


【解决方案1】:

1.9.8,#633 计划对范围进行严格控制,完成后将更容易访问(外部)变量,这些变量也是 data.table 中的列名。

但这很容易解决。不知道为什么你真的很难过..

fun <- function(id) {
    .id_unique = unique(id)
    myDT[.(.id_unique), which=TRUE]
}

fun(foo) # [1] 3 4

【讨论】:

  • 确实,我确实想出了如何解决这个问题(虽然我花了很长时间...
  • 期待该功能请求的实现。一直梦想着这样的事情,但直到现在才知道它实际上正在计划中!
猜你喜欢
  • 2020-03-05
  • 1970-01-01
  • 1970-01-01
  • 2012-08-23
  • 1970-01-01
  • 2015-03-09
  • 2013-01-27
  • 2021-04-18
相关资源
最近更新 更多