首页 > 解决方案 > data.table 在 R 中逐行应用函数

问题描述

我有一个接受参数的函数,我想将它应用于 data.table 中的每一行。

我的数据如下所示:

Row    Temp   Humidity  Elevation
1       10      0.5       1000
2       25      1.5       2000
3       28      2.0       1500

我有一个功能

myfunc <- function(x, n_features=3){
# Here x represents each row of a data table.
# Feature names are important for me as my actual function is operating on feature names

return(x[,Temp]+x[,Humidity]+(x[,Elevation]*(n_features)))

}

我希望我的输出看起来像

Row    Temp   Humidity  Elevation   myfuncout
1       10      0.5       1000      3010.5
2       25      1.5       2000      6026.5
3       28      2.0       1500      4530

我试过df[, myfuncout := myfunc(x, n_features=3), by=.I]了,但这没有用。另外,不确定我是否必须使用.SD这里来完成这项工作......这里有什么关于我如何实现这一目标的输入吗?谢谢!

标签: r

解决方案


如果是 a data.table,我们可以使用

myfunc <- function(dt,  n_features = 3) {  
     dt[, out := (Temp + Humidity) + (Elevation * n_features)]  
     dt
}         

myfunc(df, 3)

-输出

df
#   Row Temp Humidity Elevation    out
#1:   1   10      0.5      1000 3010.5
#2:   2   25      1.5      2000 6026.5
#3:   3   28      2.0      1500 4530.0

推荐阅读