Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R data.table将函数应用于两列之和_R_Data.table_Apply - Fatal编程技术网

R 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)的结果,该函数将列作为参数。我知道我可以创建另一列,其中包含第

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

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是的,如果可以跳过中间列,我只想保存几行代码和列。我明白了,嵌套函数,使其成为一个函数。