gpt4 book ai didi

r - 带有输入的每一行数据框的 map_dfc

转载 作者:行者123 更新时间:2023-12-04 01:44:45 25 4
gpt4 key购买 nike

我开始学习“purrr”库的用法,并想知道我将如何进行以下操作:

目标

将一个函数应用于数据帧的每一行,输入作为列,并将函数输出绑定(bind)为输入数据帧中的一列

想法

从文档看来 map_dfc 是这里的完美函数

尝试的解决方案

library(purrr)
library(dplyr)

test_func <- function(n, lambda){
return(n+lambda)
}

n <- seq(1,10,1)
lambda <- seq(1, 10, 1)

new_df <- list(n=n,lambda=lambda) %>% cross_df()

new_df <- map_dfc(new_df, test_func)
# even tried the below
# new_df <- map_dfc(new_df, ~test_func)

错误

Error in .f(.x[[i]], ...) : argument "lambda" is missing, with no default

最佳答案

purrr 方式 - 看起来** - 将使用 invoke

new_df %>% 
mutate(new_col = invoke(test_func, new_df))
# A tibble: 100 x 3
# n lambda new_col
# <dbl> <dbl> <dbl>
# 1 1 1 2
# 2 2 1 3
# 3 3 1 4
# 4 4 1 5
# 5 5 1 6
# 6 6 1 7
# 7 7 1 8
# 8 8 1 9
# 9 9 1 10
#10 10 1 11
# … with 90 more rows

来自帮助文件:

This pair of functions make it easier to combine a function and list of parameters to get a result. invoke is a wrapper around do.call that makes it easy to use in a pipe.

所以 invoke(test_func, new_df)

test_func(new_df[[1]], new_df[[2]])

** 帮助文件还说 enter image description here


没有purrr

do.call(test_func, new_df)

关于r - 带有输入的每一行数据框的 map_dfc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55772906/

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