R 如何在以TIBLE作为返回的嵌套数据上运行/写入映射函数?

R 如何在以TIBLE作为返回的嵌套数据上运行/写入映射函数?,r,function,tidyverse,purrr,R,Function,Tidyverse,Purrr,我想自己编写两个函数,并将这些函数应用于嵌套数据 第一个函数的任务是访问嵌套数据(名称:GROSS)的数据,使用这些值作为输入,使用它们进行计算,并将它们写回与GROSS列相同的结构中。结果将存储在一个新列(名称TEST01)中 第二个函数应该从总量中减去TEST01中的值 我的问题是函数一次只能写回一个值(正确吗?),因此我使用列表作为输出。所以碰巧我在一个列表中有一个列表作为结果,而不是在一个列表中有一个tibble作为期望。我如何调整结果 以下是一个例子: library(tidyvers

我想自己编写两个函数,并将这些函数应用于嵌套数据

第一个函数的任务是访问嵌套数据(名称:GROSS)的数据,使用这些值作为输入,使用它们进行计算,并将它们写回与GROSS列相同的结构中。结果将存储在一个新列(名称TEST01)中

第二个函数应该从总量中减去TEST01中的值

我的问题是函数一次只能写回一个值(正确吗?),因此我使用列表作为输出。所以碰巧我在一个列表中有一个列表作为结果,而不是在一个列表中有一个tibble作为期望。我如何调整结果

以下是一个例子:

library(tidyverse)
library(purrr)

df <- as_tibble(matrix(c("A1000", 2016, 2016, 1000, 800, 200, 
"A1000", 2016, 2017, 50, 100, -50, "A1000", 2016, 2018, 0, -40, 40, 
"A1001", 2016, 2016, 500, 0, 500, "A1002", 2017, 2017, 2000,0, 2000, 
"A1002", 2017, 2018, 0, -3000, -3000), nrow = 6, byrow = TRUE, 
dimnames = list(NULL, c("Contract", "Year", "AccoutingYear", "Income", "Costs", "Result"))))%>% 

mutate(Contract = as.factor(Contract), 
       Income   = as.numeric(Income), 
       Costs    = as.numeric(Costs),
       Result   = as.numeric(Result)) %>%

nest(GROSS = c(AccoutingYear, Income, Costs, Result))

T_FUN <- function(df, Quota = 0.4, Provision = 0.2) {
return(list(
            AccoutingYear = df$AccoutingYear, 
            Income    = as.numeric(df$Income * Quota),
            Costs     = as.numeric(df$Costs  * Quota), 
            Provision = as.numeric(df$Income * Quota * Provision)))
}

df %>% mutate(TEST01 = map(.x = GROSS, Quota = 0.3, Provision = 0.25,.f = T_FUN))
库(tidyverse)
图书馆(purrr)
df%
变更(合同=要素(合同),
收入=作为数字(收入),
成本=数字形式(成本),
结果=作为.numeric(结果))%>%
鸟巢(总=c(会计收益、收入、成本、结果))
T_FUN%变异(TEST01=map(.x=GROSS,Quota=0.3,Provision=0.25,.f=T_FUN))
对于第二个函数,我没有任何方法的想法

有人知道可能的解决办法吗?非常感谢。
Tobias

T\u FUN
返回一个TIBLE而不是列表没有问题。弄清楚您想要实现的目标有点困难,但听起来您正在寻找一种并行迭代两个数据帧列表的方法。一种方法是使用purrr中的
map2
。您可以尝试以下方法:

T_FUN%
变异(
TEST01=map(.x=GROSS,Quota=0.3,Provision=0.25,f=T_-FUN),
RESU01=map2(总、测试01、R_FUN)
) %>% 
拉动(RESU01)
#> [[1]]
#>#tibble:3 x 4
#>会计年度收入成本准备金
#>                    
#> 1 2016              700   560     125  
#> 2 2017               35    70     -53.8
#> 3 2018                0   -28      40  
#> 
#> [[2]]
#>#A tibble:1 x 4
#>会计年度收入成本准备金
#>                    
#> 1 2016              350     0      462.
#> 
#> [[3]]
#>#A tibble:2 x 4
#>会计年度收入成本准备金
#>                    
#> 1 2017             1400     0      1850
#> 2 2018                0 -2100     -3000

(v1.0.0)于2021-05-25年创建。

这正是我要找的,谢谢。@Tobias如果答案有帮助,请点击左侧的复选标记接受答案。每个帖子只能接受一个答案。提及-