R data.table将函数应用于两列之和
我有一个data.table,我想在它的列上应用一个函数。通常是这样做的:R data.table将函数应用于两列之和,r,data.table,apply,R,Data.table,Apply,我有一个data.table,我想在它的列上应用一个函数。通常是这样做的: dt[, lapply(.SD, func), .SDcols = c("col1", "col2")] 这将在这两列上应用函数func。但是,如果我想把它应用到这两列的总和上呢?差不多 dt[, lapply(.SD, func), .SDcols = "col1 + col2"] 显然不行 您可以将其推广到将func应用于另一个函数(在本例中为sum)的结果,该函数将列作为参数。我知道我可以创建另一列,其中包含第
dt[, lapply(.SD, func), .SDcols = c("col1", "col2")]
这将在这两列上应用函数func
。但是,如果我想把它应用到这两列的总和上呢?差不多
dt[, lapply(.SD, func), .SDcols = "col1 + col2"]
显然不行
您可以将其推广到将
func
应用于另一个函数(在本例中为sum
)的结果,该函数将列作为参数。我知道我可以创建另一列,其中包含第一个函数的结果,但有没有办法解决这个问题?要添加列,请尝试
dt[, func(Reduce(`+`,.SD)), .SDcols = c("col1","col2")]
这也适用于两个以上的列,在应用
func
之前将它们全部添加在一起,我通常通过创建中间变量“保持简单”,如果我真的必须删除它,则稍后删除它。老实说,添加带有数据的额外列需要多长时间(或额外内存)。table
?:)@daroczig是的,如果可以跳过中间列,我只想保存几行代码和列。我明白了,嵌套函数,使其成为一个函数。