【问题标题】:Replace double/nested for loop over function that returns dataframe with apply in R [duplicate]用R中的应用替换返回数据帧的双/嵌套for循环函数[重复]
【发布时间】:2015-11-06 01:36:06
【问题描述】:

考虑一个接受两个输入参数并返回一个数据框的函数:

myFun <- function(a, b){
   data.frame(aSQ = a^2, bSQ = b^2, SQPROD = a^2*b^2)
}

myFun(1, 1)

可以在这个函数的每个参数上构造一个双循环:

results <- as.data.frame(matrix(0, nrow = 9, ncol = 3, 
                         dimnames = list(c(), c('aSQ', 'bSQ', 'SQPROD'))))
for (a in 1:3)
   for (b in 1:3)
      results[(a-1)*3+b, ] <- myFun(a, b)

如何用 apply 结构替换这个双循环?

【问题讨论】:

    标签: r loops for-loop apply mapply


    【解决方案1】:
    resList <- mapply(
       myFun,
       a = rep(1:3, times = 3), 
       b = rep(1:3, each  = 3), 
       SIMPLIFY = FALSE
    )
    
    dplyr::bind_rows(resList)
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-21
    • 1970-01-01
    • 2021-08-09
    • 1970-01-01
    • 1970-01-01
    • 2021-10-03
    相关资源
    最近更新 更多