R—逐循环运行函数



我有这个数据帧

df <- data.frame(nr = seq(1, 200))

比方说我有类似的功能

mult <-
function(x = 1) {

return(
df %>% 
mutate(
result = nr*x,
x = x
)
)

}

有没有更好的方法把数字放在x参数上,比如从-999到999。并将所有内容绑定到单个数据帧?

result <-
rbind(
mult(x = 1),
mult(x = 2),
mult(x = 3),
mult(x = 4)
)

我们可以使用rbindlist

library(data.table)
rbindlist(lapply(1:4, mult))

您可以将purrr::map_dfr与您的设置一起使用:

library(purrr)
result2 = map_dfr(1:4, mult)
all.equal(result2, result)
# [1] TRUE

当然,您可以使用-999:999来代替1:4

或者,您可以使用outer(默认情况下会相乘,但您可以指定任何二进制运算(来代替mult函数,类似于以下内容:

result3 <- cbind(df, result = c(outer(df$nr, 1:4)), x = rep(1:4, each = nrow(df)))
all.equal(result, result3)
# [1] TRUE

相关内容

  • 没有找到相关文章

最新更新