【问题标题】:R data.table apply function to sum of two columnsR data.table 将函数应用于两列的总和
【发布时间】:2015-07-08 04:26:53
【问题描述】:

我有一个 data.table,我想在它的列上应用一个函数。通常这样做是这样的:

dt[, lapply(.SD, func), .SDcols = c("col1", "col2")]

这将在这两列上应用函数func。但是,如果我想将它应用于这两列的总和怎么办?类似的东西

dt[, lapply(.SD, func), .SDcols = "col1 + col2"]

显然行不通。

您可以将此概括为将func 应用于另一个将列作为参数的函数(在本例中为sum)的结果。我知道我可以创建另一个包含第一个函数的结果的列,但是有没有办法解决这个问题?

【问题讨论】:

  • 我通常通过创建中间变量来“保持简单”,如果我真的必须摆脱它,以后再删除它。老实说,用data.table 添加额外的列需要多长时间(或额外的内存)? :)
  • @daroczig 没错,如果可以跳过中间列,我只想保存几行代码和列。

标签: r data.table apply


【解决方案1】:

要添加列,请尝试

dt[, func(Reduce(`+`,.SD)), .SDcols = c("col1","col2")]

这也适用于两列以上,在应用func之前将它们加在一起。

【讨论】:

  • 我明白了,嵌套函数,使其成为一个函数。
猜你喜欢
  • 2017-05-12
  • 2021-04-21
  • 1970-01-01
  • 2018-11-10
  • 1970-01-01
  • 2014-10-15
  • 2020-02-15
  • 2014-08-05
  • 1970-01-01
相关资源
最近更新 更多