将变量和名称传递给data.table函数

亨克

我有一个需要应用于data.tables [j和by]的不同名称的报告。我通过将参数包装在函数中来完成此操作的唯一方法eval(substitute(value))这使代码的可读性降低。我已将j参数命名为“变量”,但我想将函数的j参数传递给setnames函数。

因此,问题是:

有办法避免eval(substitute(value))施工吗?

我可以将j参数传递给setnames函数吗?

library(data.table)
library(ggplot2)
data(diamonds, package = "ggplot2")
dt = as.data.table(diamonds)

var.report = function(df, value, by.value) {
  var.report = df[, list( .N,
                    sum(is.finite(eval(substitute(value)))), # count values
                    sum(is.na(eval(substitute(value)))) # count NA
  ), by = eval(substitute(by.value))]

  setnames(var.report, c("variable", "N","n.val","n.NA"))

  return(var.report)
}


var.report(dt, depth, clarity)
埃迪

如何eval(substitute遍历函数的整个主体(或者,data.table如果您想更具体一点,只需计算):

var.report = function(df, value, by.value) {
  eval(substitute({
    var.report = df[, list( .N,
                      sum(is.finite(value)), # count values
                      sum(is.na(value)) # count NA
    ), by = by.value]

    setnames(var.report, c("variable", "N","n.val","n.NA"))

    return(var.report)
  }))
}

var.report(dt, depth, clarity)
#   variable     N n.val n.NA
#1:      SI2  9194  9194    0
#2:      SI1 13065 13065    0
#3:      VS1  8171  8171    0
#4:      VS2 12258 12258    0
#5:     VVS2  5066  5066    0
#6:     VVS1  3655  3655    0
#7:       I1   741   741    0
#8:       IF  1790  1790    0

我不太了解第二个问题,通常会在原始表达式中分配名称,这样有助于更好地跟踪事物,例如:

var.report = df[, list(N     = .N,
                       n.val = sum(is.finite(value)), # count values
                       n.NA  = sum(is.na(value)) # count NA
                      )
                , by = list(variable = by.value)]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将data.table和变量传递给函数

来自分类Dev

将data.table的列(名称和值)传递给函数

来自分类Dev

将函数中的变量传递给lm()的data.table

来自分类Dev

将软件包名称和函数名称作为变量传递给python

来自分类Dev

将没有名称的变量传递给函数

来自分类Dev

jQuery将函数名称传递给变量并调用它

来自分类Dev

将没有名称的变量传递给函数

来自分类Dev

将变量传递给使用相同名称的函数

来自分类Dev

如何将类变量的名称传递给函数?

来自分类Dev

如何将新的摘要列的名称传递给函数中的data.table?

来自分类Dev

将变量传递给函数和将列表传递给函数之间的性能差异

来自分类Dev

将data.frame名称传递给函数R

来自分类Dev

将变量传递给函数

来自分类Dev

将变量传递给函数

来自分类Dev

将变量传递给函数和生存期

来自分类Dev

如何将类的函数和变量传递给setInterval?

来自分类Dev

将数组和变量传递给Perl中的函数

来自分类Dev

将数组传递给scanf函数和变量

来自分类Dev

将变量和值传递给函数(通配符?)

来自分类Dev

Javascript 将变量和 elementId 传递给函数

来自分类Dev

将函数参数传递给data.table i

来自分类Dev

将参数动态传递给名称函数

来自分类Dev

Twig-将参数传递给具有动态变量名称的函数

来自分类Dev

将列表元素名称作为变量传递给lapply中的函数

来自分类Dev

python:如何仅使用字符串名称将变量传递给函数

来自分类Dev

将函数和参数传递给函数

来自分类Dev

将变量传递给foreach函数

来自分类Dev

将变量传递给.html()函数

来自分类Dev

将变量传递给JavaScript中的函数

Related 相关文章

热门标签

归档