gpt4 book ai didi

R dplyr::mutate - 添加返回列表中的所有元素

转载 作者:行者123 更新时间:2023-12-04 09:38:04 24 4
gpt4 key购买 nike

我有一个返回列表的函数。我正在使用 mutate在数据框中添加与输出相对应的列。计算相当复杂,所以我宁愿只调用一次函数。我对 R 和 dplry 比较陌生,无法找到更有效的方法。

这是我现在正在做的一个非常简单的例子。

library(dplyr)

testFun <- function(x,z)
{
list(x2=x*x + z, x3=x*x*x + z)
}

have <- data.frame(x=seq(1:10),y=1,z=0)

want <- have %>%
dplyr::mutate(x2=testFun(x,z)$x2,
x3=testFun(x,z)$x3)

我怎样才能更有效地做到这一点?

最佳答案

purrr -package 你可以解决这个问题,像这样:

library(purrr)
library(dplyr)

testFun <- function(x,z) {
tibble(x2=x*x + z, x3=x*x*x + z)
}

have %>%
mutate(new_x = map2(x, z, testFun)) %>%
unnest(new_x)

# x y z x2 x3
# 1 1 1 0 1 1
# 2 2 1 0 4 8
# 3 3 1 0 9 27
# 4 4 1 0 16 64
# 5 5 1 0 25 125
# 6 6 1 0 36 216
# 7 7 1 0 49 343
# 8 8 1 0 64 512
# 9 9 1 0 81 729
# 10 10 1 0 100 1000

请注意,我将函数的输出从列表更改为小标题。

关于R dplyr::mutate - 添加返回列表中的所有元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49985093/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com