我想将函数应用于data.frame/data.table
cases <- expand.grid(a=c(TRUE,FALSE), b=c(TRUE,FALSE), c=c(TRUE,FALSE))
myFun <- function(data, row){
otherFun(data, row[1], row[2], row[3])
}
apply(cases, 1, myFun, data=dt1)
然而,这是有效的
myFun <- function(data, row){
otherFun(data, row$a, row$b, row$c)
}
这不起作用。
最好的方法是什么,以便它不必依赖列顺序?
答案 0 :(得分:2)
apply
向矩阵强制执行。查看?apply
中的详细信息:
如果X不是数组而是具有非空昏暗值的类的对象(例如数据框),则应用尝试通过as.matrix将其强制转换为数组(如果它是二维的)(例如,数据框)或通过as.array。
所以$ indexing是不合适的。