我有这个数据帧
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