【发布时间】: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