我正在尝试迭代数据表来计算两列的积分,dt$xmin
和dt$xmax
,其函数为f
,并将答案写入新列dt$integral
。我目前正试图使用类似下面的代码而没有成功:
dt$integral <- mapply(f, dt$xmin, dt$xmax)
任何帮助将不胜感激!
答案 0 :(得分:0)
也许您不需要mapply
,简单的作业应该有效dt$integral<- f(dt$min, dt$max)
。没有您想要的数据或示例,但我认为这对您有用(使用data.table
):
library(data.table)
dt <- as.data.table(mtcars)
newfunc <- function(a, b){
return(a + log(b) - exp(a/b) + 3.1*a^1.918)
}
# Adding a new column called "newcol"
> head(dt[, newcol := newfunc(wt, mpg/qsec),])
mpg cyl disp hp drat wt qsec vs am gear carb newcol
1: 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4 14.73145
2: 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4 16.30387
3: 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1 11.45233
4: 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1 13.87593
5: 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2 13.78816
6: 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1 -10.84599
对于单个新列,上述样式的变量赋值将起作用。对于多个新列和函数,您需要使用一个返回新列列表的函数。使用:=
中的data.table
了解更多有关作业的信息。